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