小编Rom*_*man的帖子

具有动态字段的Scala案例类复制构造函数

我有一个不可变的State,我处理一个消息队列,其中每个消息是状态中某些字段的新值列表.

新值可能适用于字段的一部分 - 例如,设置或清除多个标志中的一个标志(位),或仅更改16位字段的低或高8位部分.

在处理完消息之后,我希望获得状态的不可变副本,并应用修改.

object StateField {
  sealed abstract class StateField()
  sealed abstract class Register extends StateField
  sealed abstract class Flag extends StateField
  case object AX extends Register
  case object AH extends Register
  case object AL extends Register
  case object CF extends Flag
  case object OF extends Flag
}

class StateFieldModification(field: StateField, value: Int)

class ModificationMessage(content: List[StateFieldModification])

case class State(AX: Int, Flags: Int) {

  def readRegister(field: StateField.Register): Int = field match {
    case StateField.AX => this.AX
    case …
Run Code Online (Sandbox Code Playgroud)

getter setter scala immutability case-class

6
推荐指数
1
解决办法
1366
查看次数

标签 统计

case-class ×1

getter ×1

immutability ×1

scala ×1

setter ×1