我有一個Scala案例類,它具有某些val的參數。我有幾個使用這個案例類的方法。假設我的案例類定義如下:具有行爲的Scala中的案例類
case class CaseA(a: Int, b: List[CaseB])
case class CaseB(a: Int, b: text, c: Boolean)
CaseA和CaseB都代表我的案例類的域模型。但是當我在應用程序中使用它們時,我想根據CaseB的布爾字段向CaseA添加一些行爲。例如,讓我們假設在CaseA中,val b有4個CaseB對象。我想添加一個可以通過b運行的行爲,並告訴我CaseB中的任何一個元素的val c是否設置爲true。
我沒有想出什麼是以下實現CaseA的:
case class CaseA(a: Int, b: List[CaseB], c: Boolean)
但是這種方法的問題是,當我從數據庫加載我CaseA對象,我不需要有VAL因爲val c是計算出來的,而不是CaseA對象的一部分。我更進一步,將我的CaseA修改爲如下所示:
case class CaseA(a: Int, b: List[CaseB], c: Option[Boolean])
我可以看到它已經變得很難看了。我怎樣才能將行爲添加到我的案例類中,以便valc不需要成爲CaseA對象的一部分,並且每次運行時都要計算它?
如果需要重新計算「lazy val」和「def」,只需交換即可。用戶代碼將保持完全相同,雖然:) – Felix