當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


Ruby BasicObject.method_missing用法及代碼示例


本文簡要介紹ruby語言中 BasicObject.method_missing 的用法。

用法

method_missing(symbol [, *args] ) → result

obj 被發送一條無法處理的消息時由 Ruby 調用。 symbol 是被調用方法的符號,args 是傳遞給它的任何參數。默認情況下,調用此方法時,解釋器會引發錯誤。但是,可以覆蓋該方法以提供更多動態行為。如果決定不處理特定方法,則應調用super,以便祖先可以拾取丟失的方法。下麵的示例創建了一個類 Roman ,它響應名稱由羅馬數字組成的方法,返回相應的整數值。

class Roman
  def roman_to_int(str)
    # ...
  end

  def method_missing(symbol, *args)
    str = symbol.id2name
    begin
      roman_to_int(str)
    rescue
      super(symbol, *args)
    end
  end
end

r = Roman.new
r.iv      #=> 4
r.xxiii   #=> 23
r.mm      #=> 2000
r.foo     #=> NoMethodError

相關用法


注:本文由純淨天空篩選整理自ruby-lang.org大神的英文原創作品 BasicObject.method_missing。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。