Scala 如何知道要调用什么方法(命名参数)

发布于 2024-10-17 09:34:42 字数 411 浏览 5 评论 0原文

class Algo { 
    def a(  a : String = "Hola ",  b : String  = "adios" ) {
        print( a )
        print( b )
    }
    def a() { 
        print ("Uh?")
    }
}
object Algo { 
    def main( args : Array[String] ) { 
        new Algo().a()
    }
}

打印 Uh?

如果未定义方法 a(),则代码使用默认值打印“Hola adios”。

因此,我由此推断,如果精确的签名匹配,那么这是首选。

这个推理正确吗?

class Algo { 
    def a(  a : String = "Hola ",  b : String  = "adios" ) {
        print( a )
        print( b )
    }
    def a() { 
        print ("Uh?")
    }
}
object Algo { 
    def main( args : Array[String] ) { 
        new Algo().a()
    }
}

prints Uh?

If method a() is not defined, the code prints "Hola adios" using the default values.

So, I deduce, from this, that, if an exact signature is match, that is preffered.

Is this reasoning correct?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

何止钟意 2024-10-24 09:34:42

此行为在 SID #1 第 3.1 节中明确定义。

重载解析 在方法应用表达式中,当多个重载
替代方案适用,使用默认参数的替代方案
从未被选中。

This behavior is clearly defined in SID #1, section 3.1.

Overloading Resolution In a method application expression, when multiple overloaded
alternatives are applicable, the alternative which use default arguments
is never selected.

泪眸﹌ 2024-10-24 09:34:42

是的。仅当未找到合适的签名时才使用默认参数。

请参阅此演讲,有人问了这个问题。

Yes. Only if no fitting signature is found are default parameters used.

See this talk, some guy asks exactly for this.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文