Ruby では、メッセージは文字列です。メッセージのセットとそれらに対する応答を事前に定義する代わりに、任意の文字列にメッセージとして応答する方法を定義する方法は?
2 に答える
3
class MessageResponder
def method_missing(method, *args, &block)
"You called #{method}(#{args.map(&:inspect).join(', ')})#{' with block' if block}"
end
end
responder = MessageResponder.new
responder.foo(3, 7)
# => You called foo(3, 7)
メッセージがどのクラス メソッドにも対応しない場合は、呼び出されたメソッドmethod_missing
が呼び出されます。例でそれが何を受け取るかを見ることができます。それをオーバーライドすると、どのメッセージにも応答できます。
于 2013-10-31T00:44:54.850 に答える
1
一致するメソッドのないメッセージは に送信されmethod_missing
ます。好きなように応答するように実装できます。
于 2013-10-31T00:43:02.700 に答える