Я возился в воскресенье днем и пытаюсь создать своего рода структуру «комнаты». По сути, объект 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
изменяемым, и в качестве личного упражнения я стараюсь этого избегать.