Chciałbym móc używać wytrawiania scala w celu przechowywania reprezentacji binarnej klasy case.Scala klasy picklingowania wersji
chciałbym wiedzieć, czy istnieje sposób, aby zarządzać wersjonowanie klasy etui (bufor protokół sposób pozwala zrobić)
Oto mój przykład
Robię program o pewna data, o następującej klasie przypadku
case class MessageTest(a:String,b:String)
Potem serializacji instancji tej klasy
import scala.pickling._
import binary._
val bytes=MessageTest("1","2").pickle
I wtedy zapisać wynik do pliku
Później mogę teraz zrobić ewolucję na mojej klasie przypadku, aby dodać nowe pole opcjonalnego
case class MessageTest (a:String,b:String,c:Option[String]=None)
I chciałbym móc ponownie wykorzystać dane, które zapisałem wcześniej w moim pliku, deserializować go i móc odzyskać instancję klasy sprawy (z wartością domyślną dla nowego parametru)
Ale kiedy użyć następującego kodu
import scala.pickling._
import binary._
val messageback=bytes.unpickle[MessageTest]
mam następujący błąd:
java.lang.ArrayIndexOutOfBoundsException: 26 na scala.pickling.binary.BinaryPickleReader $$ anonfun $ 2.apply (BinaryPickleFormat .scala: 446) na scala.pickling.binary.BinaryPickleReader $$ anonfun $ 2.apply (BinaryPickleFormat.scala: 434) na scala.pickling.PickleTools $ class.withHints (Tools.scala: 498) na scala.pickling .binary.BinaryPickleReader.withHints (BinaryPickleFormat.scala: 425) w scala.pickling.binary.BinaryPickleReader.beginEntryNoTagDebug (BinaryPickleFormat.scala: 434) na scala.pickling.binary.BinaryPickleReader.beginEntryNoTag (BinaryPickleFormat.scala: 431)
zrobiłem coś złego?
Czy istnieje sposób, aby mój scenariusz zadziałał?
Pozdrowienia
Co za cisza ... Mam to samo pytanie, @Fred czy znalazłeś rozwiązanie? – Emer
Rozważamy zastosowanie typu 'Map' jako obejścia. http://docs.scala-lang.org/overviews/collections/maps – Emer