我有一个密码
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/