Ruby在课堂上重新定义“和”关键字?

时间:2013-11-21 15:48:20

标签: ruby metaprogramming token keyword dsl

是否可以在ruby中重新定义and之类的关键字?我有一些像这样的DSL代码:

rule condition and another_condition do
  do_something
end

我希望and成为我班级中的另一个ruby方法,就像conditionanother_condition一样。这可能吗?

2 个答案:

答案 0 :(得分:1)

andor之类的关键字无法重载(覆盖)。

本文解释了运算符重载并指定了无法覆盖的运算符:

http://strugglingwithruby.blogspot.com/2010/04/operator-overloading.html

在文章的最后,它指出:

You cannot override keywords, such as "or", nor can you override:
&& & || | () {} :: . ~ .. ...

<强>更新

正如JörgWMittag指出的那样,这是错误的。 andor&&||是唯一无法覆盖的运算符。 not可以通过!覆盖{/ 1}}。

答案 1 :(得分:0)

语言不支持。

但你总是可以尝试像this一样的工具。