Tengo un script JS script.js que contiene una clase MyType . Me gustaría usar los métodos de la clase add() y divide dentro de un script de scala App.scala .
Usando Scala.js y JSImport , importo script.js a App.scala .
Sin embargo, cuando trato de usar los métodos MyType add() y divide dentro del script scala, aparece el error error: expected start of definition ?
¿Podría ayudarme a identificar el problema?
¡Gracias por adelantado!
secuencia de comandos.js:
class MyType { constructor(x, y) { this.x = x; this.y = y; } add(z){ let {x,y} = this; return x + y + z; } divide(z){ let {x,y} = this; return (x + y)/z; } }; module.exports = {MyType};App.scala:
import scala.scalajs.js import scala.scalajs.js.annotation._ @js.native @JSImport("./script.js","MyType") class MyType(var x:Double, var y:Double) extends js.Object object MyApp { @JSExport def main(args:Array[String]): Unit = { val added = new MyType(1,2).add(3) println(s"my $added") // 1 val divided = new MyType(4,3).divide(2) println(s"my $divided") // 6 } }build.scala:
name:="JSImports" version:="0.1" scalaVersion:="2.11.12" enablePlugins(ScalaJSPlugin) jsDependencies += ProvidedJS/"script.js" scalaJSUseMainModuleInitializer:=trueEl error de inicio de definición esperado es el resultado de un error de formato: no puede tener una línea vacía entre @JSImport y class MyType .
Lo más probable es que esto se deba a la forma en que Scala finaliza las sentencias/declaraciones en ausencia de punto y coma. No conozco las reglas exactas, pero una línea vacía a menudo marca la diferencia.