在Ruby中定义一个新的逻辑运算符

时间:2011-11-28 14:53:38

标签: ruby metaprogramming

这是一个空闲的白日梦,但是有可能通过一些巧妙的元编程技巧在Ruby中定义一个新的逻辑运算符吗?我想定义一个but运算符。

例如,如果我想做x而不是y的事情,我必须写下这样的内容:

if x and not y

但我想写一下

if x but not y

它应该与and完全相同,但可以由程序员明智地使用以增加代码的易读性。

2 个答案:

答案 0 :(得分:2)

如果你真的想这样做,请尝试编辑parse.y并重新编译Ruby。这就是定义Ruby语法的地方。

答案 1 :(得分:0)

正如其他人已经指出的那样,你无法在Ruby中定义自己的运算符。运算符集是预定义和固定的。您所能做的就是通过响应相应的消息来影响某些现有运算符(即转换为消息发送的运算符)的语义

但是,当然,您可以非常轻松地实施but 方法

class Object
  def but
    self && yield
  end
end

Object.new.but { not true }