尝试定义两个名为foo
的方法,一个采用两个参数列表,另一个只采用一个参数列表。似乎不起作用:
object Bar {
def foo(a: Int)(b: Int): Int = a+b
def foo(a: Int): Int = foo(a)(0)
}
error: ambiguous reference to overloaded definition,
both method foo in object Bar of type (a: Int)Int
and method foo in object Bar of type (a: Int)(b: Int)Int
match argument types (Int)
def foo(a: Int): Int = foo(a)(0)
^
???不,他们没有......
答案 0 :(得分:4)
您可以轻松定义默认参数,而不是手动重载功能。正如错误消息已告诉您,引用不明确,因此不允许。
这是您使用默认参数的函数:
def foo(a: Int)(b: Int = 0): Int = a+b