Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在case类中将scala seq导出到js.Array_Scala_Scala.js_Case Class - Fatal编程技术网

如何在case类中将scala seq导出到js.Array

如何在case类中将scala seq导出到js.Array,scala,scala.js,case-class,Scala,Scala.js,Case Class,这个问题是一个与经济有关的问题 以防我有一个表单的case类 case类Foo(变量id:Long,变量title:Seq[String]) i、 e.它包含一系列数据,是否有任何设置要导出为js.Array?在仅Scala.js的项目中,只需执行以下操作: case class Foo(var id: Long, var title: Seq[String]) { @JSExport("title") protected def jsTitle: js.Array[String] =

这个问题是一个与经济有关的问题

以防我有一个表单的case类

case类Foo(变量id:Long,变量title:Seq[String])

i、 e.它包含一系列数据,是否有任何设置要导出为
js.Array

在仅Scala.js的项目中,只需执行以下操作:

case class Foo(var id: Long, var title: Seq[String]) {
  @JSExport("title")
  protected def jsTitle: js.Array[String] =
    title.toJSArray

  @JSExport("title")
  protected def jsTitle_=(v: js.Array[string]): Unit =
    title = v.toSeq
}
但是,这将拒绝在共享源代码中编译,因为Scala/JVM不了解
js.Array


恐怕你的问题没有现成的解决办法。最简单的解决方案是在项目的JVM和JS部分中分别声明
Foo
。然后您仍然可以从共享源使用它。

我通常使用upickle,我的方法是在共享项目中使用泛型 即

在scala JVM中,我将case类作为表单的对象进行pickle

它是一个类型为
Foo[Seq]
的对象,在scala JS中,我将对象pickle为
Foo[js.Array]

case class Foo[S[_]](var id : Long, var title: S[String])
Foo(id, Seq(title1, title2, ...))