在一行中编写类似这样的东西的好方法是什么。如果在调试模式下值为nil,则目标是在消息级别记录消息,以及所示的正确消息。看起来很简单,但为这样小的东西编写5行代码一直困扰着我。我可以用方法包装它,但是如果可以的话我想避免。感谢。
if value.nil?
Rails.logger.info "value: nil"
else
Rails.logger.debug "value: #{value.inspect}"
end
答案 0 :(得分:8)
value.nil? ? (Rails.logger.info "value: nil") : (Rails.logger.debug "value: #{value.inspect}")
你可以尝试的另一种方式(这不一样,但相似):
Rails.logger.send (value.nil? ? :info : :debug), "value: #{value.inspect}"
但我认为最好的方法是编写自己的记录器,自动决定在哪个变量写入哪个变量:
NullLogger.log value
答案 1 :(得分:0)
value.nil? ? Rails.logger.info "value: nil" : Rails.logger.debug "value: #{value.inspect}"
答案 2 :(得分:0)
value ? Rails.logger.debug("value: #{value.inspect}") : Rails.logger.info("value: nil")
答案 3 :(得分:0)
如果您想要一行,只需删除换行符:
if value.nil? then Rails.logger.info "value: nil" else Rails.logger.debug "value: #{value.inspect}" end
但为什么,为什么,有人想要这样做吗?