因为obj对象没法响应talk这个消息,如果使用 respond_to? 这个方法,就可以实现判断对象能否响应给定的消息了
obj = Object.new
if obj.respond_to?("talk")
obj.talk
else
puts "Sorry, object can't talk!"
end
request = gets.chomp
if book.respond_to?(request)
puts book.send(request)
else
puts "Input error"
end
22.method_missing,一个 Ruby 程序员的梦中情人
def method_missing(method, *args)
if method.to_s =~ /(.*)_with_cent$/
attr_name = $1
if self.respond_to?(attr_name)
'%.2f' % (self.send(attr_name).to_f / 100.00)
else
super
end
end
end
23.chomp
chomp方法是移除字符串尾部的分离符,例如n,r等...而gets默认的分离符是n
24. hash.each_pair{|k,v|} & send()
if bank_order.present?
data_hash.each_pair { |k, v| bank_order.send("#{k}=", v) }
else
bank_order = BankOrder.new data_hash
end
25.config.middleware 通过 rake -T 可以查看, 在config/ - 去除不必的 middleware
26.1.day.ago.strftime('%Y%m%d')










