Я возился в свой воскресный день и пытаюсь создать структуру "комнаты". В принципе, объект 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))))
Эрго: номер один имеет выход North
в комнату два, вторая комната имеет выход South
обратно в комнату.
Однако, как вы можете себе представить, это не так: значение firstRoom
val не определено при его создании, поэтому попытка ссылаться на него во время его назначения не будет работать.
Я уверен, что это верно для большинства, если не для всех языков программирования. Мой вопрос: как я могу решить это, не изменяя объект Room
? Я могу просто создать несколько объектов Room
и добавить к ним выходы потом, но это делает Room
изменчивым, а в качестве личного упражнения я стараюсь избегать этого.