Скажем, я пытаюсь написать простую игру Tic-Tac-Toe. Он имеет поле M x N. В игре есть только одно поле, поэтому он, вероятно, должен быть представлен синглом object. Вот так:
object Field {
val height : Int = 20
val width : Int = 15
...
}
Но я не хочу жестко задавать высоту и ширину, поэтому было бы неплохо, если бы они могли быть переданы объекту во время выполнения, через конструктор или что-то в этом роде. Но object не может иметь конструкторов.
Ну, я мог бы изменить height и width как var s, а не val и ввести новый метод
def reconfigure (h:Int, w:Int) = {
height = h
width = w
}
и назовите его в начале игры. Но это тоже не изящно.
Итак, есть ли опрятный способ сделать это - т.е. иметь объект val, инициализированный со значениями, неизвестными до выполнения?