首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法为具有不可变HashMaps的case类生成取消选取器

无法为具有不可变HashMaps的case类生成取消选取器
EN

Stack Overflow用户
提问于 2014-01-14 18:32:30
回答 1查看 474关注 0票数 2

我最近遇到了scala-pickling,我正在尝试如何在项目中使用它,所以我一直在使用一个带有不可变哈希图的case类的简单示例。在本例中,scala-pickling不会生成unpickler,我不知道为什么。以下是演示该问题的REPL会话:

代码语言:javascript
复制
scala> case class Foo(a: HashMap[Symbol,Symbol], b: HashMap[Symbol,Double], c: Symbol, d: Double)
defined class Foo

scala> val bar = Foo(new HashMap[Symbol,Symbol](), new HashMap[Symbol,Double](), 'A, 1.4)
bar: Foo = Foo(Map(),Map(),'A,1.4)

scala> val pickled = bar.pickle
pickled: scala.pickling.json.JSONPickle = 
JSONPickle({
  "tpe": "Foo",
  "c": {
    "name": "A"
  },
  "d": 1.4,
  "a": {

  },
  "b": {

  }
})

scala> val unpickled = pickled.unpickle[Foo]
<console>:18: error: Cannot generate an unpickler for Foo. Recompile with -Xlog-implicits for details
   val unpickled = pickled.unpickle[Foo]

有谁能指出我做错了什么吗?或者,scala酸洗有什么问题吗?

编辑:实际上,当我生成一个只有一个符号的属性的类时,似乎也会发生同样的事情(我将发布另一个REPL会话)。在scala中有没有一种特殊的方式来处理符号--酸洗?

代码语言:javascript
复制
scala> case class Foo(symb: Symbol)
defined class Foo

scala> val foo = Foo('A)
foo: Foo = Foo('A)

scala> val pick = foo.pickle
pick: scala.pickling.json.JSONPickle = 
JSONPickle({
  "tpe": "Foo",
  "symb": {
    "name": "A"
  }
})

scala> val unpick = pick.unpickle[Foo]
<console>:17: error: Cannot generate an unpickler for Foo. Recompile with -Xlog-implicits for details
   val unpick = pick.unpickle[Foo]
EN

回答 1

Stack Overflow用户

发布于 2015-05-26 08:59:09

我知道这是一个古老的帖子,但请尝试

代码语言:javascript
复制
import scala.pickling._, Defaults._, json._
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21111276

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档