How to make a right-associative infix operator?

扶醉桌前 提交于 2019-11-28 06:47:31
Petr Pudlák

I found a solution. Scala reference says in section 6.12.3 Infix Operations:

The associativity of an operator is determined by the operator’s last character. Operators ending in a colon ‘:’ are right-associative. All other operators are left-associative.

Therefore it was enough to rename >> to >>:.

It took me some time to realize that while a >> b is desugared into a.>>(b), a >>: b is desugared into b.>>:(a). So I had to define >>: as

def >>:(x: T): T = x >> this
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!