在Ruby中,對象具有定義了稱爲method_missing
一個方便的方法,它允許一個處理對於尚未甚至已(明確)的方法的方法調用:與其他語言中的Ruby的method_missing是否等價?
由紅寶石調用時物鏡被髮送的消息時,它不能處理的。符號是調用方法的符號,args是傳遞給它的任何參數。默認情況下,解釋器在調用此方法時引發錯誤。但是,可以重寫該方法以提供更多動態行爲。下面的例子創建一個類Roman,它響應名稱由羅馬數字組成的方法,返回相應的整數值。
class Roman
def romanToInt(str)
# ...
end
def method_missing(methId)
str = methId.id2name
romanToInt(str)
end
end
r = Roman.new
r.iv #=> 4
r.xxiii #=> 23
r.mm #=> 2000
例如,Ruby on Rails的使用該允許的方法,如find_by_my_column_name
呼叫。
我的問題是,還有哪些其他語言支持與method_missing
等效,以及如何在代碼中實現等效功能?
'roman_to_int'有空的實現,爲什麼r.iv返回4? – Tim 2017-07-08 01:09:19
@Tim你應該填寫空白代碼,返回一個值。他只是決定不顯示所有細節。這可以用羅馬數字轉換器來實現。 – 2017-07-08 01:21:36