2015-08-26 59 views
2

雖然你可以有默認值的函數:在斯卡拉[2.11.6]有可能有一個函數參數從另一個值計算出來嗎?

def someFunc(aLong: Long = 0l) {} 

是否有可能以某種方式引用的aLong價值,同時設立第二個參數?

def someFunc(aLong: Long = 0l, optObj: Option[SomeObject] = Option(SomeObject(aLong)) {} 

當然這是一個完全製造的例如作爲在這種情況下,你可能會只是傳遞SomeObject(aLong)和函數體內提取SomeObjectLong值。

問題仍然存在,因爲我想知道這是否可行以及是否完成。

如果您嘗試編譯上述編譯器抱怨找不到aLong

儘管如此,我相信我曾經絆倒過它是如何完成的(早期或後期的初始化可能已被調用,它可能會將大括號作爲過程的一部分,因爲「任何事物」可以是表達式斯卡拉。

我想知道如果任何人都可以在此闡明,它是如何做什麼,如果有的話,這樣做的缺陷?

回答

2

它是允許的,但他們必須在不同的參數列表:

def someFunc(aLong: Long = 0l)(optObj: Option[SomeObject] = Option(SomeObject(aLong))) {} 

沒有特別pitfal我知道的。

+0

這樣做的訣竅 - 現在如果只有我可以通過播放的路由文件... – Techmag

相關問題