Я хотел бы иметь возможность использовать травление scala для хранения двоичного представления класса case.Scala caseing class versioning
Я хотел бы знать, если есть способ управления версиями случае класса (буфер пути протокола позволяет сделать)
Вот мой пример
Я делаю программу на определенная дата, со следующим классом случае
case class MessageTest(a:String,b:String)
Тогда я сериализовать экземпляр этого класса
import scala.pickling._
import binary._
val bytes=MessageTest("1","2").pickle
И тогда я сохранить результат в файл
Позже, я мог бы теперь сделать эволюцию в моем случае класс, чтобы добавить новый необязательное поле
case class MessageTest (a:String,b:String,c:Option[String]=None)
I хотел бы иметь возможность повторно использовать данные, которые я сохранил ранее в своем файле, для десериализации и восстановления экземпляра класса case (со значением по умолчанию для нового параметра)
Но когда я использую следующий код
import scala.pickling._
import binary._
val messageback=bytes.unpickle[MessageTest]
я получил следующее сообщение об ошибке:
java.lang.ArrayIndexOutOfBoundsException: 26 в scala.pickling.binary.BinaryPickleReader $$ anonfun $ 2.Apply (BinaryPickleFormat .scala: 446) at scala.pickling.binary.BinaryPickleReader $$ anonfun $ 2.apply (BinaryPickleFormat.scala: 434) at scala.pickling.PickleTools $ class.withHints (Tools.scala: 498) at scala.pickling .binary.BinaryPickleReader.withHints (BinaryPickleFormat.scala: 425) at scala.pickling.binary.BinaryPickleReader.beginEntryNoTagDebug (BinaryPickleFormat.scala: 434) в scala.pickling.binary.BinaryPickleReader.beginEntryNoTag (BinaryPickleFormat.scala: 431)
ли я что-то не так?
Есть ли существующий способ заставить мой сценарий работать?
С уважением
Какая тишина ... У меня такой же вопрос, @Fred вы нашли решение? – Emer
Мы рассматриваем возможность использования типа «Карта» в качестве обходного пути. http://docs.scala-lang.org/overviews/collections/maps – Emer