有:
case class A(x: Int) {
def >>= (y: A) = A(x * y.x)
def >> (y: A) = A(x + y.x)
}
由于>>=
和>>
都以>
开头,因此它们应具有相同的优先级和左关联性。
然而:
A(5) >>= A(3) >> A(2)
返回25。
但是应该返回17,因为:
A(5) >>= A(3) >> A(2) == (A(5) >>= A(3)) >> A(2) == 17
看起来Scala编译器将parantheses放在错误的位置。
错误?