1

我有一个 scala.js 项目。我对 Scala.Meta 和 Binding.scala 有一个奇怪的行为。

我想从案例类创建一个案例类:

case class SimpleCaseClass(i: Int, s: String, list: Seq[String])

应生成:

SimpleCaseClassFormData(Var[Int], Var[String], Vars[String])

只要我有一个Vars,我就会收到以下错误:

A method defined in a JavaScript raw type of a Scala.js library has been called. This is most likely because you tried to run Scala.js binaries on the JVM. Make sure you are using the JVM version of the libraries.
java.lang.Error: A method defined in a JavaScript raw type of a Scala.js library has been called. This is most likely because you tried to run Scala.js binaries on the JVM. Make sure you are using the JVM version of the libraries.
    at scala.scalajs.js.package$.native(package.scala:134)
    at scala.scalajs.js.Array.push(Array.scala:106)
    at scala.scalajs.js.JSConverters$JSRichGenTraversableOnce$.$anonfun$toJSArray$1(JSConverters.scala:60)

没有(例如SimpleCaseClassFormData(Var[Int], Var[String]) )它可以工作。

在这里你可以找到整个项目:scala-adapters-form

4

1 回答 1

1

不推荐使用宏注释(参见https://github.com/scalameta/scalameta/issues/1182

你可以创建一个基于 Scala Meta 的 sbt 插件。请参阅https://github.com/ThoughtWorksInc/sbt-example/作为实现此类插件的示例。

为了避免不兼容的版本,您应该使用 sbt 的内置 Scala Meta,即 1.7.0 版本。

于 2018-04-11T19:30:57.647 回答