0

Ruby では、メッセージは文字列です。メッセージのセットとそれらに対する応答を事前に定義する代わりに、任意の文字列にメッセージとして応答する方法を定義する方法は?

4

2 に答える 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 に答える