我有ruby项目(没有rails),我想为我的类的逻辑AND和OR运算符添加别名。我已经重载了我的类的逻辑运算符,但如果我添加alias_method :foo, :or
并使用像class_example_1 foo class_example_2
我得到SyntaxError。如何使别名工作?
不幸的是,你不能这样做。
Ruby的中缀运算符如and
和or
被硬编码为语言语法的一部分,因此您无法像在Haskell或Kotlin中那样定义新的中缀运算符。
有一些strange but interesting hacks允许你获得类似的结果,但解析器约束意味着你无法完成你想要实现的目标。
或者,您可以在没有括号的情况下调用foo
,它看起来非常相似:
class_example_1.foo class_example_2
或者,既然您已经重载了现有的逻辑运算符,只需使用:
class_example_1 or class_example_2