【发布时间】:2016-08-02 08:33:37
【问题描述】:
学习 scala.js 并尝试将 scala.js 类导出到 javascript,如下所示:
@JSExport("Pt")
class Pt[T]( points: Seq[T] ) {
@JSExport
def y = points(1)
}
当我在 javascript 控制台 (Chrome) 中尝试此操作时:
new Pt([1,2,3])
上面抛出一个错误:"$c_sjsr_UndefinedBehaviorError ... 1,2,3 is not an instance of scala.collection.immutable.Seq"。不知道如何在 javascript 中将 Seq 作为参数传递。
创建一个带参数的类构造函数有什么诀窍,这样它就可以作为 javascript 库和 scala 库工作?我必须使用 js.Array 吗? (如果可能,更喜欢不可变集合)
我尝试了@JSExportAll,但它也不起作用:
@JSExportAll
class Pt[T]( points: Seq[T] ) {
def y = points(1)
}
然后在 javascript 控制台 (Chrome) 中,我什至找不到构造函数。它抛出 "ReferenceError: Pt is not defined"
【问题讨论】:
-
是的,我同意这可能就是正在发生的事情。请记住,在 JavaScript API 中,Scala 代码必须使用 JS 类型来描述事物,因为 JavaScript 对 Scala 类型一无所知。因此,您传入可变的
js.Array,然后将其转换为不可变的Seq,以便在Scala 代码中使用...