2013-09-03 12 views
5
Ben ScalaDays 2013 sunuldu yeni Scala Dekapaj kütüphanesine girmeye çalışıyordu

: Scala PicklingScala Dekapaj kullanım MyObject -> Dizi [Byte] -> MyObject

Ya gerçekten eksik bazı basit örnekler nasılsın kütüphane kullanılır.

Bu örnekte
import scala.pickling._ 

val pckl = List(1, 2, 3, 4).pickle 
val lst = pckl.unpickle[List[Int]] 

, pckl türü turşu sahiptir:

I böyle bir unpickle tekrar bir nesne turşu anlaşılmaktadır. Bu türün kullanımı tam olarak nedir ve örneğin nasıl bir Array [Byte] olsun? Eğer bayt içine turşu istedi istiyorum Eğer

cevap

6

sonra kod aşağıdaki gibi görünecektir: Eğer json isteseydim

import scala.pickling._ 
import binary._   
val pckl = List(1, 2, 3, 4).pickle 
val bytes = pckl.value 

, kod ithalatının küçük bir değişiklik neredeyse tamamen aynı görünecektir:

nesne turşusu nasıl
import scala.pickling._ 
import json._   
val pckl = List(1, 2, 3, 4).pickle 
val json = pckl.value 

sen (varlık ya binary veya json) scala.pickling altında seçti ithalat türüne bağlıdır. binary ve value öğelerini içe aktarma özelliği Array[Byte]'dir. json'u içe aktarın ve bu bir json String.

+2

Yep, cmbaxter tamamen haklı. Turşu temsilinin türü "Turşu" nın bir alt türüdür. Pikle temsilinden 'değeri' seçildiğinde, beklediğiniz tür, 'Dizi için ikili (Byte)', JSON için "String", vb.) –

+0

Yanıtlar için teşekkürler. Bazen Scala'nın örtülü bir şey yaptığında kafam karışır. Hala Java gibi daha açık sözdizimi için kullanıyorum ama üzerinde çalışıyorum. ;) –

+1

IntelliJ'in, hangi türü kullanacağını anlamadığı olabilir mi? Ben scala.pickling._ ve binary._ ithal ettim ve bir nesne üzerinde .pickle aradığımda, IntelliJ bana, bunun değil, türetilmiş olduğunu söyler, BinaryPickle değil. Bu nedenle, bana .value'nin Pickle.this.type # ValueType türünde olduğunu söyler. Derleyici şikayetçi değil, sonuç türü BinaryPickle. Benim çalışmam: IDE'de bir hata göstermemek için şimdi .pickle.asInstanceOf [BinaryPickle] çağırıyor. –

İlgili konular