Mercury mogę użyć:Czy Scala ma składnię aktualizacji rekordów do tworzenia zmodyfikowanych klonów niezmiennych struktur danych?
A = B^some_field := SomeValue
powiązać do kopii B, oprócz tego, że jest SomeValue
some_field
zamiast cokolwiek to było w B. Uważam, że ekwiwalent Haskell jest coś takiego:
a = b { some_field = some_value }
Czy Scala ma coś takiego do "modyfikowania" niezmiennych wartości. Alternatywą wydaje się być konstruktor, który bezpośrednio ustawia każde pole w instancji, co nie zawsze jest idealne (jeśli istnieją konstrukcje, które powinien zachować konstruktor). Poza tym byłaby naprawdę niestabilna i znacznie bardziej delikatna, gdybym musiała jawnie przekazać każdą inną wartość w instancji, którą chcę zmodyfikowaną kopię.
Nie mogłem nic na ten temat znaleźć, googlując lub w krótkim przeglądzie podręcznika do obsługi języka lub "Scala By Example" (który przeczytałem od początku do końca, ale nie pochłonąłem wszystkich jeszcze , więc może tam być).
widzę, że ta funkcja może mieć jakieś dziwne interakcje z ochroną dostępu Java stylu i podklasy mimo ...
Czy to nie klasy przypadków, których szukasz? http://daily-scala.blogspot.com/2010/01/case-classes-in-28.html –
Zobacz także http://stackoverflow.com/questions/3900307/cleaner-way-to-update-nested- struktury –