method_missing
*obj.method_missing( シンボル h ,引数 i ) → other_obj
obj が処理できないメッセージを送信されたときに、Ruby によって呼び出されます。symbol は呼び出されたメソッドのシンボルで、args はそれに渡された任意の引数です。以下の例では、ローマ数字で構成される名前のメソッドに応答し、対応する整数値を返すクラス Roman を作成します。method_missing のより一般的な用途は、プロキシ、委任者、およびフォワーダーを実装することです。
class Roman
def roman_to_int(str)
# ...
end
def method_missing(method_id)
str = method_id.id2name
roman_to_int(str)
end
end
r = Roman.new
r.iv ! 4
r.xxiii ! 23
r.mm ! 2000
メソッドの欠落について聞いたばかりで、Ruby のプログラミングで詳細を調べに行きましたが、本から引用した上記の説明は頭に浮かびません。誰でも簡単に説明できますか?より具体的には、メソッド欠落はインタープリターによってのみ使用されますか、それともプログラムで直接呼び出す必要がありますか (NASA のコードを書くのではなく、Web アプリを書いているだけだと仮定します)?