上更新變換值假設我有一個Scala的情況下類如下所示:Scala中的情況下類(例如倍率設定部)
case class Item(
roundedValue: Double = 0.00)
我要上roundedValue執行以下的舍入運算的每個變量是時間更新:
roundedValue = math.round(roundedValue*100)*0.01
在其他語言中,我只想覆蓋爲roundedValue的二傳手,但現在看來,我不能改寫的情況下,類變量的setter,否則將無法編譯。
一個解決方案,我所看到的是roundedValue重命名爲_roundedValue,並把它變成私有,然後添加公共方法來模擬getter和setter(與舍入邏輯):Overriding setter on var
但是這使得構造函數用法非常尷尬的case類使用命名參數時。有沒有其他的方式來做到這一點,或者這是Scala案例類的限制嗎?
首例所有的類都是默認爲不可變的,因此沒有制定者。 –
好吧,這是有道理的,考慮到當我嘗試實際執行此操作時,我得到了「重新分配到val」的編譯錯誤。 – kgx
默認情況下,roundedValue是一個case類中的val。但是,您可以將case類聲明爲:case class Item(var roundedValue:Double = 0.00),並且該變量將是可變的。 – jcern