Ruby的25个编程细节(技巧、实用代码段)

2019-09-25 09:42:12于丽

因为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')