Tôi đang loay hoay xung quanh vào chiều Chủ Nhật và đang cố gắng tạo ra một cấu trúc 'phòng' các loại. Về cơ bản, một đối tượng Room
có một số lần thoát, mỗi mục tham chiếu đến Room
giây khác. Bây giờ, điều đầu tiên tôi đang cố gắng tạo ra là hai số Room
được kết nối với nhau, tốt nhất là trong một câu lệnh gán. Như thế này:Làm cách nào để tôi tham chiếu đến biến trong khi gán giá trị cho biến đó trong khi vẫn giữ lại bất biến?
case class Room(title: String, exits: Map[Direction.Direction, Room])
val firstRoom = Room("A room", Map(North -> Room("Another room", Map(South -> firstRoom))))
Ergo: Phòng một người có một lối ra North
vào phòng hai, phòng hai có một lối ra South
trở lại phòng một.
Tuy nhiên, như bạn có thể tưởng tượng, điều này sai: firstRoom
val không được xác định khi tạo, vì vậy hãy cố gắng tham chiếu nó trong quá trình gán sẽ không hoạt động.
Tôi chắc chắn điều này là đúng đối với hầu hết, nếu không phải tất cả ngôn ngữ lập trình. Câu hỏi của tôi: Làm cách nào để giải quyết điều này mà không cần làm cho đối tượng Room
của tôi có thể thay đổi được? Tôi chỉ đơn giản có thể tạo một vài đối tượng Room
và thêm các lối thoát cho chúng sau đó, nhưng điều đó làm cho khả năng tắt tiếng Room
và là bài tập cá nhân tôi cố gắng tránh điều đó.
Câu trả lời sử thi, bạn xứng đáng nhận được tất cả những cuộc nổi dậy mà bạn có thể nhận được. Không chỉ bạn cung cấp một câu trả lời đơn giản, mà còn là một câu trả lời sâu hơn về một tính năng ngôn ngữ mà tôi đã không có cơ hội sử dụng hoặc tìm thấy mục đích. Tôi đã gặp những dòng suối một hoặc hai lần khi tìm kiếm câu trả lời này, nhưng không phải là một đầu mối làm thế nào họ sẽ giải quyết vấn đề này. Nhiều nghĩa vụ. – fwielstra