使用多个参数列表重载方法是否合法?

时间:2016-07-18 14:53:56

标签: scala overloading

尝试定义两个名为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)
                             ^

???不,他们没有......

1 个答案:

答案 0 :(得分:4)

您可以轻松定义默认参数,而不是手动重载功能。正如错误消息已告诉您,引用不明确,因此不允许。

这是您使用默认参数的函数:

def foo(a: Int)(b: Int = 0): Int = a+b