例如,我有
data ShipDesign = ShipDesign {
offense :: Offense
, defense :: Defense
, maxHealth :: Integer
, repairRate :: Integer
, stealth :: Integer
, radar :: Integer
, speed :: Integer
, shipType :: String
...
}
现在我想改变防守。已知的方法是:
changeDefense :: (Defense -> Defense) -> ShipDesign -> ShipDesign
changeDefense fDef sd@(ShipDesign o d m rr s r sp st ...) = ShipDesign o (fDef d) m rr s r sp st ...
这不优雅。尤其是在游戏中,每一步只改变几个值是很常见的。
我的问题是:是否有库、设计模式或其他方式以更优雅的方式更改单个值?