ubuntu, ror, jQuery, css, website memo
太嫩, 沒啥心得, 用來紀錄每天學的
2008年11月13日 星期四
使用METHOD_MISSING時請小心
class Dog
def method_missing(method, *args, &block)
if method.to_s =~ /^bark/
puts "woofwoof!"
else
super
end
end
end
rex = Dog.new
rex.bark #=> woofwof!
rex.bark! #=> woofwoof!
rex.bark_and_run #=> woofwoof!
rex.respond_to? :bark #=> false
<=
我們用respond_to? 檢查時會以為沒有這東西
rex.bark #=> woofwoof!
所以要加上 repsond_to?(method) method
class Dog
METHOD_BARK = /^bark/
def respond_to?(method)
return true if method.to_s =~ METHOD_BARK
super
end
def method_missing(method, *args, &block)
if method.to_s =~ METHOD_BARK
puts "woofwoof!"
else
super
end
end
end
rex = Dog.new
rex.respond_to?(:bark) #=> true
rex.bark #=> woofwoof!
沒有留言:
張貼留言
較新的文章
較舊的文章
首頁
訂閱:
張貼留言 (Atom)
沒有留言:
張貼留言