加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

uPickle和ScalaJS:密封特征序列化

发布时间:2020-12-16 08:58:51 所属栏目:安全 来源:网络整理
导读:我正试图找一个基本的上瘾的例子来工作,似乎我在这里遗漏了一些东西.我想试试 the readme page for upickle 提供的示例 import upickle._sealed trait A@key("Bee") case class B(i: Int) extends Acase object C extends A 然后,我的代码是: object Model
我正试图找一个基本的上瘾的例子来工作,似乎我在这里遗漏了一些东西.我想试试 the readme page for upickle提供的示例

import upickle._

sealed trait A
@key("Bee") case class B(i: Int) extends A
case object C extends A

然后,我的代码是:

object Model {
  def main(args: Array[String]): Unit = {

    val a = B(5): A
    println(a)

    val out = write(a)
    println(out)

    val a2 = read[A](out)
    println(a2)

    println(a == a2)

  }
}

我得到的只是错误:

The referenced trait [[A]] does not have any sub-classes. This may
happen due to a limitation of scalac (SI-7046) given that the trait is
not in the same package. If this is the case,the hierarchy may be
defined using integer constants.

我有两个问题:

>我怎样才能说服uPickle这个特性在同一个包里? (因为它是.)
>或者如果我不能:如何使用整数常量定义层次结构?

解决方法

曾经有过这样的问题,你可以在这样的问题上花费多个小时,你在询问StackOverflow问题后几分钟就解决了吗?

事实证明,由于compiler-specific details,这样一个密封的特征直到它定义的文件中的点之后才会知道它的直接子类.因此,在这种情况下,我已经在主方法之后定义了特征及其案例,其中up??ickle将进行宏扩展和魔术.此时,它不会知道特征的情况.如果在定义特征及其案例之后将main方法移动到同一文件中,它将起作用.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读