我正在使用Scala Pickling,这是一个 Scala 的自动序列化框架。根据作者的幻灯片T
,只要有隐式Pickler[T]
范围,任何类型都可以腌制。在这里,我假设她的意思是scala.tools.nsc.io.Pickler
。但是,以下内容无法编译:
import scala.pickling._
import scala.pickling.binary._
import scala.tools.nsc.io.Pickler
object Foo {
def bar[T: Pickler](t: T) = t.pickle
}
错误是:
[error] exception during macro expansion:
[error] scala.ScalaReflectionException: type T is not a class
[error] at scala.reflect.api.Symbols$SymbolApi$class.asClass(Symbols.scala:323)
[error] at scala.reflect.internal.Symbols$SymbolContextApiImpl.asClass(Symbols.scala:73)
[error] at scala.pickling.PickleMacros$class.pickleInto(Macros.scala:381)
[error] at scala.pickling.Compat$$anon$17.pickleInto(Compat.scala:33)
[error] at scala.pickling.Compat$.PickleMacros_pickleInto(Compat.scala:34)
我正在使用带有 scala-pickling 0.8-SNAPSHOT 的 Scala 2.10.2。
这是错误还是用户错误?
scala.pickling.SPickler
编辑 1:和都出现相同的错误scala.pickling.DPickler
。
编辑2:看起来这是一个错误:https ://github.com/scala/pickling/issues/31