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 回答