为逻辑运算符添加别名

问题描述 投票:1回答:1

我有ruby项目(没有rails),我想为我的类的逻辑AND和OR运算符添加别名。我已经重载了我的类的逻辑运算符,但如果我添加alias_method :foo, :or并使用像class_example_1 foo class_example_2我得到SyntaxError。如何使别名工作?

ruby alias alias-method
1个回答
0
投票

不幸的是,你不能这样做。

Ruby的中缀运算符如andor被硬编码为语言语法的一部分,因此您无法像在Haskell或Kotlin中那样定义新的中缀运算符。

有一些strange but interesting hacks允许你获得类似的结果,但解析器约束意味着你无法完成你想要实现的目标。

或者,您可以在没有括号的情况下调用foo,它看起来非常相似:

class_example_1.foo class_example_2

或者,既然您已经重载了现有的逻辑运算符,只需使用:

class_example_1 or class_example_2
© www.soinside.com 2019 - 2024. All rights reserved.