【发布时间】:2017-02-14 07:59:15
【问题描述】:
在 Scala 中,为什么允许这种重载?
class log {
def LogInfo(m: String, properties: Map[String, String]): Unit = {
println(m)
}
def LogInfo(m: String, properties: Map[String, String], c: UUID = null): Unit = {
println(m + c.toString())
}
}
在 LogInfo 函数的第二个定义中,我将额外参数设置为默认值 null。当我进行以下调用时,它将调用第一个重载。
val l: log = new log()
val props: Map[String, String] = Map("a" -> "1")
l.LogInfo("message", props)
为什么它不会抛出异常?如果使用默认值,我会认为这两个定义可能看起来相同。
【问题讨论】:
-
"如果使用默认值,我会认为这两个定义可能看起来相同。"你有任何证据支持这个想法,还是只是猜测?
-
为什么会抛出异常?
-
我应该说编译错误,而不是异常。
标签: scala overloading overload-resolution