0
在Ruby中,消息是字符串。如何定義如何響應任意字符串作爲消息,而不是預定義一組消息及其響應?如何創建可以處理和響應任意消息的對象
在Ruby中,消息是字符串。如何定義如何響應任意字符串作爲消息,而不是預定義一組消息及其響應?如何創建可以處理和響應任意消息的對象
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
該方法被調用。您可以在示例中看到它收到的內容。如果你覆蓋它,你可以回覆任何消息。
沒有匹配方法的消息發送到method_missing
。不管你喜歡什麼,你都可以實現它。