假設我們有一個類構造函數,它接受具有默認值的參數。Scala可以選擇提供名爲默認參數
class A(val p1 : Int = 3, val p2 : Int = 4)
比方說,我無法控制這個類,也無法修改它。我想要做的是調用A的構造函數p1 = 5,p2 =(如果condition1 == true,那麼5 else默認值)。要做到這一點的方法之一是
if(condition1)
x = new A(5,5)
else
x = new A(5)
正如你所看到的,這很容易得到大的,如果有很多參數,每次都必須有條件地供給。我想要的是類似
x = new A(p1 = 5, p2 = <if condition1 = true then 5 else default>)
我該怎麼做?需要注意的是A類的字段是丘壑,所以實例A.
創建一個不帶參數的一次性「A」是否很昂貴,以便您可以讀取其所有默認值並稍後在'if'表達式中使用它們? –
我想過這個解決方案。它並不昂貴,但感覺有點冒險。如果可能,我想避免首先讀取默認參數。 – DSR
查看http://docs.scala-lang.org/sips/completed/named-and-default-arguments.html上的最後一節「Default arguments」。看起來你可以調用方法來獲取默認值。順便說一句,如果你想出一些好東西,請回答你自己的問題! –