Có thể tạo một lớp có tham chiếu không thay đổi được đối tượng đối tác không, hoặc nó có phải là var
mà tôi gán sau khi tạo không?Lập tức các đối tượng ghép nối không thay đổi
ví dụ:
class PairedObject (p: PairedObject, id: String) {
val partner: PairedObject = p // but I need ref to this object to create p!
}
hoặc tương tự như thế nào tôi có thể khởi tạo cặp sau?
class Chicken (e: Egg) {
val offspring = e
}
class Egg (c: Chicken) {
val mother = c
}
Khéo léo! Thử nghiệm ... hoạt động –
Tôi cũng đã thêm giải pháp cho PairedObject. Ngoài ra tôi thấy rằng vals cho 'gà' và' trứng' không cần phải lười biếng. Nghiêm túc bạn không cần phải bao gồm các loại cho cả hai, như một có thể được suy ra. –
Giải pháp này sẽ hoạt động nếu được nhập ở cấp cao nhất của định nghĩa 'class' hoặc' object', nhưng một lỗi tham chiếu chuyển tiếp bất hợp pháp nếu 'chicken' và' egg' là các biến cục bộ (ví dụ, bên trong một hàm). Một giải pháp hoạt động trong bất kỳ phạm vi nào là: 'lazy val (trứng: trứng, gà: gà) = ...', có thể tự tham khảo. –