1

以下では、メソッド内で特性のオフセット値を参照するのに問題があります+(4 行目)。

現在書かれているようにthis.offset、常にゼロです。私が欲しいのは、+操作の LHS からのオフセットです。

それはどのように行われるべきですか?

trait Side {
  val offset: Int // <- I want to refer to this
  def +(side: Side) = new Object with Side {
    val offset: Int = this.offset + side.offset // but instead `this.offset` is 0
  }
}

case object Left extends Side {
  val offset = -1
}

case object Right extends Side {
  val offset = 1
}

(Left + Right).offset // -> (0 + 1) -> 1
(Right + Left).offset // -> (0 + -1) -> -1
4

1 に答える 1