2012-05-18 27 views
1

這裏是,例如,一個標準的if語義:如何在ruby中創建自己的語法/重寫現有語法?

if (condition) 
    do stuff 
end 

我希望能夠做的就是以這樣的方式,如果有異常拋出,我可以做一些重新寫if錯誤處理。

紅寶石有辦法重新定義預先存在的語法嗎?如果是這樣,怎麼樣?

編輯: 可以說在if條件下,在條件爲if(my_object.my_method)的情況下調用方法爲零。如果my_object沒有被定義,ruby會拋出一個錯誤。如果行爲發生錯誤,我希望能夠改變方式。 (在我的具體情況下,它會給我發送堆棧跟蹤信息......但電子郵件是最簡單的部分)。

+0

你可以在這裏發表你想要得到的東西嗎? – megas

+0

是的,我會更新。 – NullVoxPopuli

回答

0

我不認爲有必要重新定義ruby行爲。

肯定你的應用程序有一個主要的方法,所以你可以用異常處理來包裝它。

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

這將用於發送電子郵件,但可以說,我想返回一個默認值? 我不知道ruby 2.0是否允許語法重寫。 顯然ruby語法不能被重寫。 = d – NullVoxPopuli

0

最簡單的方式是包裝你的腳本與異常處理,我敢打賭,可以做到沒有工作與負載或需求努力。否則,你正在談論(a)重寫Ruby的工作方式,或者(b)在加載時修改AST。

0

不,您不能在Ruby程序中更改Ruby的語法或語義。您可能想要使用Perl6或Lisp。