如何在ruby中创建自己的语法/重写现有语法?

时间:2012-05-18 00:00:50

标签: ruby

例如,这是一个标准的if语义:

if (condition)
     do stuff
end

我希望能够做的是以这样的方式重写if,如果抛出异常,我可以做一些错误处理。

ruby​​有没有办法重新定义预先存在的语法?如果是这样,怎么样?

编辑: 让我们说在if条件下,在条件if(my_object.my_method)中调用nil方法。如果未定义my_object,则ruby会抛出错误。我希望能够改变方式,如果它可以捕获错误的行为。 (在我的具体情况下,它会通过电子邮件向我发送堆栈跟踪...但是电子邮件是很容易的部分。)

3 个答案:

答案 0 :(得分:0)

最简单的方式是使用异常处理来包装脚本,我敢打赌,通过使用load或require,可以毫不费力地完成。否则你要谈的是(a)重写Ruby的工作方式,或者(b)在加载时修改AST。

答案 1 :(得分:0)

我认为不需要重新定义红宝石的行为。

确保你的应用程序有一个主要的方法,所以你可以用异常处理来包装它。

begin  
   # main method  
rescue => msg  # by default it will catch only StandartError
   # send email "hi, you have a problem in you application"  
end

答案 2 :(得分:0)

不,你不能在Ruby程序中改变Ruby的语法或语义。您可能希望使用Perl6或Lisp。