Mi piacerebbe poter utilizzare il serial pickling per memorizzare la rappresentazione binaria di una classe di case.Versioning case class di decapaggio Scala
Vorrei sapere se c'è un modo per gestire il controllo delle versioni di classe caso (il buffer protocollo modo permette di fare)
Ecco il mio esempio
Faccio un programma a una certa data, con la seguente classe case
case class MessageTest(a:String,b:String)
Poi serializzare un'istanza di questa classe
import scala.pickling._
import binary._
val bytes=MessageTest("1","2").pickle
E poi salvare il risultato in un file
Più tardi, potrei ora devono fare evoluzione sulla mia classe caso, per aggiungere un nuovo campo facoltativo
case class MessageTest (a:String,b:String,c:Option[String]=None)
I vorrebbe essere in grado di riutilizzare i dati che ho archiviato in precedenza nel mio file, per deserializzare ed essere in grado di recuperare un'istanza di una classe case (con valore predefinito per il nuovo parametro)
Ma quando io uso il seguente codice
import scala.pickling._
import binary._
val messageback=bytes.unpickle[MessageTest]
ho ottenuto il seguente errore:
java.lang.ArrayIndexOutOfBoundsException: 26 a scala.pickling.binary.BinaryPickleReader $$ anonfun $ 2.Apply (BinaryPickleFormat .scala: 446) a scala.pickling.binary.BinaryPickleReader $$ anonfun $ 2.apply (BinaryPickleFormat.scala: 434) a scala.pickling.PickleTools $ class.withHints (Tools.scala: 498) a scala.pickling .binary.BinaryPickleReader.withHints (BinaryPickleFormat.scala: 425) presso scala.pickling.binary.BinaryPickleReader.beginEntryNoTagDebug (BinaryPickleFormat.scala: 434) a scala.pickling.binary.BinaryPickleReader.beginEntryNoTag (BinaryPickleFormat.scala: 431)
ho fatto qualcosa di sbagliato?
Esiste un modo per far funzionare il mio scenario?
saluti
Che silenzio ... Ho la stessa domanda, @Fred hai trovato una soluzione? – Emer
Stiamo considerando di utilizzare il tipo di 'Mappa' come soluzione alternativa. http://docs.scala-lang.org/overviews/collections/maps – Emer