相关疑难解决方法(0)

Scala通过名称混淆呼叫

我正在使用REPL通过名称示例进行一些调用,并在Eclipse中运行相同的示例.

以下是Eclipse中的内容:
场景1:

val funct = {println("Calling funct")}
takesFunct(funct)

def takesFunct(f: => Unit)
{
   val b = f
}
Run Code Online (Sandbox Code Playgroud)

输出是:调用函数

场景2:
方法takeFunct保持不变

takesFunct({println("Calling funct")}
Run Code Online (Sandbox Code Playgroud)

输出是:
调用本功能
调用本功能

Scala REPL场景1:

scala> def takesFunct(f: => Unit)
{
  val b = f
}
takesFunct: (f: => Unit)Unit

scala> val funct = {println("Calling funct")}
Calling funct
funct: Unit = ()

scala> takesFunct(funct)
// No Output
Run Code Online (Sandbox Code Playgroud)

场景2与上面定义的方法相同

scala> takesFunct({println("Calling funct")}
Calling funct
Run Code Online (Sandbox Code Playgroud)

两个问题
1)为什么Eclipse的输出与REPL不同?
2)传球有什么区别

val funct = {...}
takesFunct(funct)
Run Code Online (Sandbox Code Playgroud)

而不是

takesFunct({...})
Run Code Online (Sandbox Code Playgroud)

scala

6
推荐指数
1
解决办法
6010
查看次数

标签 统计

scala ×1