2011-02-11 14 views
5
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一路平安」使用默認值。

因此,我從中推斷出,如果確切的簽名是匹配的,那麼這是被優先考慮的。

這個推理是否正確?

回答

13

此行爲在SID #1第3.1節中明確定義。

重載分辨率在方法應用表達式中,當多個重載 替代方案是適用的,其中使用缺省參數 從未選擇的替代方案。

0

是的。只有在找不到擬合簽名時才使用默認參數。

請參閱this talk,一些人正是問這個。