Sagen wir, ich versuche, ein einfaches Tic-Tac-Toe-Spiel zu schreiben. Es hat ein M x N-Feld. Das Spiel hat nur ein Feld, also sollte es wahrscheinlich mit einem singleton object
dargestellt werden. So:
object Field {
val height : Int = 20
val width : Int = 15
...
}
Aber ich möchte die Höhe und Breite nicht fest codieren, daher wäre es schön, wenn diese zur Laufzeit über einen Konstruktor oder etwas Ähnliches an das Objekt übergeben werden könnten. Aber object
s können keine Konstruktoren haben.
Nun könnte ich height
und width
ändern, damit sie var
s und nicht val
s sind, und eine neue Methode einführen
def reconfigure (h:Int, w:Int) = {
height = h
width = w
}
und sie am Anfang des Spiels aufrufen. Aber elegant ist das auch nicht.
Gibt es also eine elegante Möglichkeit, dies zu tun - also Objekt val
s mit Werten initialisieren, die vor der Laufzeit nicht bekannt sind?