-->

如何使一个右结合的中缀操作?(How to make a right-associative inf

2019-07-21 12:10发布

我有一个关联操作>> 。 问题是,它的成本线性依赖于它的左操作数的大小。 因此,一个表达的序列形成n应用>>

a >> a >> a >> a >> a >> ... >> a

它来讲二次成本n ,因为默认情况下缀运算符左结合 。 如何使它向右关联,使这样的表达的成本保持在直线状态来讲n

Answer 1:

一个找到了解决办法。 斯卡拉参考说,在6.12.3中缀操作

运营商的关联是通过运营商的最后一个字符来确定。 在一个冒号结束符“:”是右结合。 所有其他运营商都是左结合。

因此,它是足够重命名>>>>:

我花了一些时间来实现,虽然a >> b被脱到a.>>(b) a >>: b被脱到b.>>:(a) 。 因此,我不得不定义>>:作为

def >>:(x: T): T = x >> this


文章来源: How to make a right-associative infix operator?