次のようなScalaケースクラスがあると仮定します。
case class Item(
roundedValue: Double = 0.00)
変数が更新されるたびに、roundedValueに対して次の丸め操作を実行したいと思います。
roundedValue = math.round(roundedValue*100)*0.01
他の言語では、roundedValueのセッターをオーバーライドするだけですが、caseクラス変数のセッターをオーバーライドできないか、コンパイルされないようです。
私が見た解決策の1つは、roundedValueの名前を_roundedValueに変更してプライベートにし、パブリックメソッドを追加してgetterとsetterをシミュレートすることです(丸めロジックを使用):varでsetterをオーバーライドする
ただし、これにより、名前付きパラメーターを使用する場合、caseクラスのコンストラクターの使用がかなり厄介になります。これを行う他の方法はありますか、それともこれはScalaのケースクラスの制限ですか?