以下では、メソッド内で特性のオフセット値を参照するのに問題があります+
(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