scala - multiple overloaded alternatives of method bar define default arguments

同名同位置默认参数不能overload

def bar(i:Int,s:String="a"){}
def bar(i:String,s:String="b"){}

编译错误: .... multiple overloaded alternatives of method bar define default arguments.
因为scala编译后,按默认的参数位置,生成这样的方法,导致重载冲突。

public String bar$default$2() {return "a";}
public String bar$default$2() {return "b";}

解决方案:部分解决,类似java的重载。

def bar(i:Int,s:String){}
def bar(i:String,s:String){}
def bar(i:Int) = bar(i,"a")
def bar(i:String) = bar(i,"b")

 

posted @ 2016-11-28 21:02  澄轶  阅读(1830)  评论(0编辑  收藏  举报