簡體   English   中英

Def vs.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"

如果項目是這樣執行的,那么我會得到一條日志條目,內容為

成功了

但是,當我使用更具功能性的語法時:

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM