【问题标题】:What is the purpose of double method brackets in Scala?Scala中双方法括号的目的是什么?
【发布时间】:2015-03-07 21:38:44
【问题描述】:

我有代码

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

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

你可以看到有一个方法调用f()()()。但是如果我执行 f() 它会返回相同的结果。

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

【问题讨论】:

    标签: scala


    【解决方案1】:

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

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

    多个参数列表很有用有几个原因。您可以在this question 上阅读有关它们的更多信息。

    同样在 Scala 中,可以选择省略空参数列表:

    def f() = "foo"
    f //returns "foo"
    

    this 问题中所解释的,使用空参数列表的选择通常遵循惯例。

    因此,如果您有多个空参数列表,则可以省略其中任何一个:

    def f()()() = "foo"
    f()()() //returns "foo"
    f()() //returns "foo"
    f() //returns "foo"
    f //returns "foo"
    

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-05-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多