0

有没有一种更惯用的方法来根据 Scala 中的定义执行函数?我可以Function1通过立即执行比以下定义做得更好吗?

scala> (new Function1[Int, Int] { def apply(v1: Int) = v1 }) (5)
res0: Int = 5

是否存在证明此类调用合理的用例?我没有,但是在被问到这件事后我很好奇,并认为这可能有助于找出答案。

4

1 回答 1

5

Scala 确实为匿名函数提供了简洁的语法(您可以立即调用):

((x: Int, y: Int) => x + y)(4, 5)

我知道这种即时调用的唯一用例是来自另一种语言——JavaScript——它们大量用于范围界定。但在 Scala 中,您可以只使用大括号定义范围,例如:

{
    val a = 5
}
{
    val b = 4
    // a not accessible here
}

所以我看不到这样的构造在 Scala 中有用的用例。

于 2013-10-26T12:39:59.797 回答