2014年9月24日 星期三

rails respond_to 與 method_missing 使用.

來源: http://blog.enriquez.me/2010/2/21/dont-forget-about-respond-to-when-implementing-method-missing/



class Proxy def initialize(subject) @subject = subject end def method_missing(method) @subject.send(method) end end proxy = Proxy.new(Time) proxy.respond_to?(:now) # => false proxy.now # => Fri Feb 05 00:34:53 -0500 2010

更好實現Proxy 的方法.
class Proxy def initialize(subject) @subject = subject end def method_missing(method) if @subject.respond_to?(method) @subject.send(method) else super(method) end end def respond_to?(method, include_private = false) super || @subject.respond_to?(method, include_private) end end proxy = Proxy.new(Time) proxy.respond_to?(:now) # => true proxy.now # => Fri Feb 05 00:34:53 -0500 2010

【下列文章您可能也有興趣】

沒有留言: