3

什么是在一行中写这样的东西的好方法。目标是在调试模式下如果值为 nil 则在信息级别记录消息,以及显示的正确消息。看起来很简单,但是为这样的小东西写 5 行代码一直困扰着我。我可以将其包装在方法中,但如果可以的话,我想避免。谢谢。

if value.nil?
  Rails.logger.info "value: nil"
else
  Rails.logger.debug "value: #{value.inspect}"
end
4

4 回答 4

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
于 2012-06-20T12:37:14.350 回答
0
value.nil? ? Rails.logger.info "value: nil" : Rails.logger.debug "value: #{value.inspect}"
于 2012-06-20T12:38:08.137 回答
0
value ? Rails.logger.debug("value: #{value.inspect}") : Rails.logger.info("value: nil")
于 2012-06-20T12:38:13.207 回答
0

如果你想在一行中,只需删除换行符:

if value.nil? then Rails.logger.info "value: nil" else Rails.logger.debug "value: #{value.inspect}" end

但是为什么,哦,为什么,会有人想要这样做吗?

于 2012-06-21T01:26:59.730 回答