Как мне ссылаться на переменную, присваивая ей значение, сохраняя неизменность?

Я возился в воскресенье днем ​​и пытаюсь создать своего рода структуру «комнаты». По сути, объект Room имеет несколько выходов, каждый из которых относится к другим Room s. Теперь первое, что я пытаюсь создать, - это две Room , соединенные друг с другом, желательно с помощью одного оператора присваивания. Примерно так:

case class Room(title: String, exits: Map[Direction.Direction, Room])

val firstRoom = Room("A room", Map(North -> Room("Another room", Map(South -> firstRoom))))

Эрго: из первой комнаты есть выход север в комнату два, из второй комнаты есть выход юг обратно в комнату один.

Однако, как вы понимаете, это идет не так: значение firstRoom не определено при его создании, поэтому попытка обратиться к нему во время его назначения не сработает.

Я почти уверен, что это верно для большинства, если не для всех языков программирования. Мой вопрос: как мне решить эту без изменения моего объекта Room ? Я могу просто создать несколько объектов Room и затем добавить к ним выходы, но это делает Room изменяемым, и в качестве личного упражнения я стараюсь этого избегать.

21
задан sepp2k 22 January 2012 в 16:19
поделиться