Trong Thủy Tôi có thể sử dụng:Scala có cú pháp cập nhật bản ghi để tạo bản sao sửa đổi cấu trúc dữ liệu không thay đổi được không?
A = B^some_field := SomeValue
để ràng buộc A đến một bản sao của B, ngoại trừ việc some_field
là SomeValue
thay vì bất cứ điều gì nó được trong B. Tôi tin rằng Haskell tương đương là một cái gì đó như:
a = b { some_field = some_value }
Scala có một cái gì đó như thế này cho "sửa đổi" giá trị bất biến. Phương án thay thế có vẻ là có một hàm tạo trực tiếp thiết lập mọi trường trong cá thể, mà không phải lúc nào cũng lý tưởng (nếu có các trình invarients mà constructor cần duy trì). Cộng với nó sẽ thực sự clunky và mong manh hơn nhiều nếu tôi đã phải rõ ràng vượt qua mọi giá trị khác trong trường hợp tôi muốn có một bản sao sửa đổi.
Tôi không thể tìm thấy gì về điều này bằng cách googling hoặc trong một cuộc khảo sát ngắn gọn về hướng dẫn tham khảo ngôn ngữ hoặc "Scala By Example" (mà tôi đã đọc bắt đầu để hoàn thành, nhưng chưa hấp thụ hết , vì vậy nó cũng có thể ở trong đó).
tôi có thể thấy rằng tính năng này có thể có một số tương tác lạ với bảo vệ truy cập Java-phong cách và lớp con dù ...
Lớp học không phải là những gì bạn đang tìm kiếm? http://daily-scala.blogspot.com/2010/01/case-classes-in-28.html –
Xem thêm http://stackoverflow.com/questions/3900307/cleaner-way-to-update-nested- cấu trúc –