Giả sử tôi có một lớp tình huống đại diện cho personas, mọi người trên các mạng xã hội khác nhau. Thể hiện của lớp đó là hoàn toàn bất biến, và được tổ chức trong các bộ sưu tập bất biến, cuối cùng sẽ được sửa đổi bởi một diễn viên Akka.
Bây giờ, tôi có một lớp trường hợp với nhiều trường và tôi nhận được một thông báo nói rằng tôi phải cập nhật một trong các trường, đại loại như thế này:
case class Persona(serviceName : String,
serviceId : String,
sentMessages : Set[String])
// Somewhere deep in an actor
val newPersona = Persona(existingPersona.serviceName,
existingPersona.serviceId,
existingPersona.sentMessages + newMessage)
Lưu ý tôi phải chỉ định tất cả các trường, mặc dù chỉ có một thay đổi. Có cách nào để sao chép hiện tạiPersona và chỉ thay thế một trường mà không chỉ định tất cả các trường không thay đổi không? Tôi có thể viết nó như một đặc điểm và sử dụng nó cho tất cả các lớp trường hợp của tôi không?
Nếu Persona là một ví dụ giống như Bản đồ, nó sẽ dễ thực hiện.