我有 ruby 项目(没有 rails),我想为我的班级的逻辑 AND 和 OR 运算符添加别名。我已经为我的类重载了逻辑运算符,但是如果我像这样添加alias_method :foo, :or
和使用class_example_1 foo class_example_2
我会得到 SyntaxError。如何使别名起作用?
问问题
67 次
1 回答
0
不幸的是,你不能这样做。
Ruby 的中缀运算符喜欢and
并且or
被硬编码为语言语法的一部分,因此您不能像在 Haskell 或 Kotlin 中那样定义新的中缀运算符。
有一些奇怪但有趣的技巧可以让你获得类似的结果,但是解析器的限制意味着你不能完全按照你想要的方式去做。
或者,您可以foo
不带括号调用,看起来非常相似:
class_example_1.foo class_example_2
或者,由于您已经重载了现有的逻辑运算符,只需使用这些:
class_example_1 or class_example_2
于 2019-04-21T13:07:49.327 回答