Скажем, я пытаюсь написать простую игру 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
, инициализированный со значениями, неизвестными до выполнения?