【问题标题】:Why are parenthesis required for invoking methods with default arguments?为什么使用默认参数调用方法时需要括号?
【发布时间】:2013-01-03 18:07:41
【问题描述】:

我有一个带有默认参数的无副作用方法,我想在不带括号的情况下调用它,例如:

scala> def foo(x: Int = 1) = 42
foo: (x: Int)Int

scala> foo
<console>:9: error: missing arguments for method foo in object $iw;
follow this method with `_' if you want to treat it as a partially applied function
              foo
              ^

scala> foo()
res3: Int = 42

这是故意的,还是只是暂时的限制?

【问题讨论】:

    标签: scala


    【解决方案1】:

    这可能是故意的,所以你不会让参数块消失在你身上:

    def foo(x: Int = 2)(y: Int = 4) = x*y
    
    foo(3)    // What does this mean???
    

    【讨论】:

    • 我想,但在正常情况下(只有一组参数)似乎理想情况下,允许使用可选的括号。
    • 嗯,这不在SID 中,也许可以添加/覆盖?我还没有检查规范...
    • 作为一种解决方法,您可以编写另一种方法:def foo(x: Int = 1) = 42; def foo: Int = foo()
    猜你喜欢
    • 2021-05-23
    • 2022-11-10
    • 2020-08-17
    • 2014-02-19
    • 2014-08-09
    • 2015-09-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多