gpt4 book ai didi

scala - 如何制作一个右关联的中缀运算符?

转载 作者:行者123 更新时间:2023-12-03 08:55:05 27 4
gpt4 key购买 nike

我有一个关联操作>>。问题在于其成本线性取决于其左操作数的大小。因此,由n的一系列>>应用程序形成的表达式

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

n而言,它具有二次成本,因为默认情况下,中缀运算符为 left-associative。如何使其右关联,以便使这种表达式的成本就 n而言保持线性?

最佳答案

我找到了解决方案。 Scala reference在第6.12.3节“中缀操作”中说:

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.



因此,将 >>重命名为 >>:就足够了。

我花了一些时间才意识到,虽然 a >> b被减半为 a.>>(b),但 a >>: b被减半为 b.>>:(a)。所以我不得不将 >>:定义为
def >>:(x: T): T = x >> this

关于scala - 如何制作一个右关联的中缀运算符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15384744/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com