[英]Def vs. val, functional syntax not working in Scala.js?
给你一个最小的例子:
object Main extends JSApp
{
val someThing: String = determineSomething("test")
def main(): Unit =
{
println(someThing)
}
}
现在,这里有两种可能性:
private def determineSomething(s: String): String = "succeeded"
如果项目是这样执行的,那么我会得到一条日志条目,内容为
成功了
但是,当我使用更具功能性的语法时:
private val determineSomething: (s: String) => "succeeded"
我懂了
TypeError: this.determineSomething$1 is null
我很好奇为什么在(JVM)repl中会发生这种情况,两种方式都可以正常工作。
我认为您想要的是这样的:
object Main extends JSApp {
private val determineSomething: String => String = (s: String) => "succeeded"
val someThing: String = determineSomething("test")
def main(): Unit = {
println(someThing)
}
}
声明determineSomething
需要来申报前something
,否则当编译器尝试初始化后者,前者将被初始化。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.