Scala 如何知道要调用什么方法(命名参数)
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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
此行为在 SID #1 第 3.1 节中明确定义。
This behavior is clearly defined in SID #1, section 3.1.
是的。仅当未找到合适的签名时才使用默认参数。
请参阅此演讲,有人问了这个问题。
Yes. Only if no fitting signature is found are default parameters used.
See this talk, some guy asks exactly for this.