Def 与 val,函数语法在 Scala.js 中不起作用?
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"
如果项目是这样执行的,那么,我得到一个日志条目说
succeeded
但是当我使用更实用的语法时:
private val determineSomething: (s: String) => "succeeded"
我明白了
TypeError: this.determineSomething 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
的声明之前,否则当编译器试图初始化后者时,前者将未被初始化。
举个最简单的例子:
object Main extends JSApp
{
val someThing: String = determineSomething("test")
def main(): Unit =
{
println(someThing)
}
}
现在,这里有两种可能性:
private def determineSomething(s: String): String = "succeeded"
如果项目是这样执行的,那么,我得到一个日志条目说
succeeded
但是当我使用更实用的语法时:
private val determineSomething: (s: String) => "succeeded"
我明白了
TypeError: this.determineSomething 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
的声明之前,否则当编译器试图初始化后者时,前者将未被初始化。