Jaki jest najłatwiejszy sposób głębokiego klonowania (kopiowania) zmiennego obiektu Scala?Jaki jest najłatwiejszy sposób głębokiego klonowania (kopiowania) zmiennego obiektu Scala?
Odpowiedz
Ponieważ chcesz najprostszy sposób na głęboką kopiowanie obiektu Scala, a nie najszybszego, zawsze możesz serializować obiekt pod warunkiem, że jest możliwy do serializacji, a następnie deserializować go z powrotem. Poniższy kod działa tylko po skompilowaniu, a nie w REPL.
def deepCopy[A](a: A)(implicit m: reflect.Manifest[A]): A =
util.Marshal.load[A](util.Marshal.dump(a))
val o1 = new Something(...) // "Something" has to be serializable
val o2 = deepCopy(o1)
Rozwiązaniem specyficznym dla języka Java (które również powinno działać dobrze w Scala) jest Cloner library. Jest szybki, łatwy, głęboko klonuje obiekty oparte na polach (za pomocą odbicia) i jest wystarczająco inteligentny, aby nie klonować znanych niezmiennych obiektów (takich jak String, Integer itp.). Na koniec możesz zarejestrować niestandardowe niezmienne obiekty, aby nie je sklonować.
Gorąco polecam.
Po raz pierwszy usłyszałem o bibliotece Cloner. Brzmi bardzo przydatny! –
- 1. Obiekt PHP do klonowania głębokiego
- 2. Jaki jest najłatwiejszy sposób implementacji funkcji Scala PartialFunction w Javie?
- 3. Python - jaki jest właściwy sposób kopiowania atrybutów obiektu do innego?
- 4. Obiekty głębokiego kopiowania w Angular
- 5. Pythonowy sposób kopiowania obiektu iterowalnego
- 6. Niezmodyfikowany widok zmiennego zbioru Scala
- 7. Jaki jest typ obiektu zagnieżdżonego w scala
- 8. Jaki jest najskuteczniejszy sposób kopiowania zewnętrznego dostarczonego bufora do bajtów
- 9. Jaki jest najłatwiejszy sposób przetestowania interfejsu REST interfejsu API Catalyst?
- 10. Jaki jest najłatwiejszy/najszybszy sposób sprawdzenia, kiedy utworzono gałąź git?
- 11. Jaki jest najłatwiejszy sposób odbierania poczty przychodzącej przez aplikację Java?
- 12. Jaki jest najłatwiejszy sposób obsługi modali w Angular JS?
- 13. OpenCV: Jaki jest najłatwiejszy sposób dzielenia maty przez skalarne?
- 14. Jaki jest najłatwiejszy sposób użycia polecenia HEAD HTTP w PHP?
- 15. Jaki jest najłatwiejszy sposób wyodrębniania danych z pliku PDF?
- 16. Jaki jest najlepszy i najłatwiejszy sposób utworzenia formularza UITableView?
- 17. Jaki jest najłatwiejszy sposób podglądu danych z kolumny graficznej?
- 18. Nie można przypisać obiektu do obiektu zmiennego.
- 19. Najszybszy sposób kopiowania dynamicznego obiektu, który nie obsługuje funkcji kopiowania
- 20. Tablica do głębokiego kopiowania obiektów zagnieżdżonych w javascript
- 21. Używanie Parcela do klonowania obiektu?
- 22. Jaki jest właściwy sposób na przesłonięcie operacji kopiowania/kopiowania na obiekcie w Pythonie?
- 23. Jaki jest najlepszy sposób rekurencyjnego kopiowania zawartości w języku C#?
- 24. Jak zmusić JavaScript do głębokiego kopiowania ciągu znaków?
- 25. Najłatwiejszy sposób narysowania obrazu?
- 26. Jaki jest właściwy sposób sprawdzania typu obiektu dla obiektu Generic?
- 27. Jaki jest koszt zmiennego słowa kluczowego w systemie wieloprocesorowym?
- 28. QVector :: append() jaki jest powód jawnego kopiowania?
- 29. Python sposób klonowania repozytorium git
- 30. Najłatwiejszy sposób odwrócenia wartości boolowskiej?
Dobra odpowiedź! Nie może być łatwiejsze niż to! –
Zrobiłem mały [test] (https://gist.github.com/4409b8562ac24fc042b0), ale wciąż otrzymuję _ClassNotFoundException_ (i klasy przypadków są serializowane). – Tralamazza