Ruby では、オブジェクトには、method_missing
(明示的に) 定義されていないメソッドのメソッド呼び出しを処理できる便利なメソッド called があります。
obj が処理できないメッセージを送信されたときに、Ruby によって呼び出されます。symbol は呼び出されたメソッドのシンボルで、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
か、そしてコードに同等のものをどのように実装しているのかということです。