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