scala - Scala中的双方法括号的目的是什么?

标签 scala

我有一个密码

object App {
  def main(args: Array[String]) = print {CL().f()()()}
}

case class CL() {
  def f()()() = 1
}

您可以在其中看到一个名为f()()()的方法。但是,如果我执行f(),它将返回相同的结果。

那么,Scala中的f()()()f()有什么区别?

最佳答案

在Scala中,方法可以具有多个参数列表:

def f(x: Int)(y: Int, z: String)(w: Boolean) = "foo"
f(1)(2, "bar")(true) //returns "foo"

出于多种原因,多个参数列表很有用。您可以在this问题上阅读有关它们的更多信息。

同样在Scala中,可以选择省略空的参数列表:
def f() = "foo"
f //returns "foo"

使用空参数列表的选择通常受约定约束,如this问题中所述。

因此,如果您有多个空参数列表,则可以忽略其中的任何一个:
def f()()() = "foo"
f()()() //returns "foo"
f()() //returns "foo"
f() //returns "foo"
f //returns "foo"

关于scala - Scala中的双方法括号的目的是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28920303/

相关文章:

java - 强制 tableswitch 而不是 lookupswitch

scala - spark 是否优化应用于 RDD 的多个过滤器?

scala - 与猫的三个列表的笛卡尔积

json - 使用 for 表达式从可能为空的 JSON 值中提取选项

scala - 如何在现有的 Hadoop 2.x 中使用 spark

scala - bool 谓词的缩写形式

scala - 如何比较scala中的两个数据框

scala - Scala 中的 var 和 val 定义有什么区别?

scala - Scala对象和线程安全

Scala HashMap : iterate in insertion order?