在一行中寫這樣的東西的好方法是什麼?目標是在信息級別記錄消息,如果該值在調試模式下爲零,並且顯示正確的消息。看起來很簡單,但爲這樣的小東西編寫5行代碼讓我煩惱不已。我可以用方法來包裝它,但是如果可以的話,我會盡量避免。謝謝。在同一行寫這個紅寶石代碼的最佳方式
if value.nil?
Rails.logger.info "value: nil"
else
Rails.logger.debug "value: #{value.inspect}"
end
在一行中寫這樣的東西的好方法是什麼?目標是在信息級別記錄消息,如果該值在調試模式下爲零,並且顯示正確的消息。看起來很簡單,但爲這樣的小東西編寫5行代碼讓我煩惱不已。我可以用方法來包裝它,但是如果可以的話,我會盡量避免。謝謝。在同一行寫這個紅寶石代碼的最佳方式
if value.nil?
Rails.logger.info "value: nil"
else
Rails.logger.debug "value: #{value.inspect}"
end
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
value.nil? ? Rails.logger.info "value: nil" : Rails.logger.debug "value: #{value.inspect}"
它不應該是'value.nil? == true'? 此外,布爾比較是相當冗長,但不是一個真正的問題。 –
是的。這是一個比較。同意 –
value ? Rails.logger.debug("value: #{value.inspect}") : Rails.logger.info("value: nil")
如果'value'爲'false',則將採用'nil'條件。如果用戶想區分它們,最好使用'value.nil?'。 –
如果你想在同一行,只是刪除換行符:
if value.nil? then Rails.logger.info "value: nil" else Rails.logger.debug "value: #{value.inspect}" end
可是爲什麼,爲什麼,會有人想這樣做嗎?
你在代碼中寫了多少次?如果答案是N> = 2,爲它創建一個方法'log_values(value)',問題就解決了! – tokland
紅寶石的首選樣式是創建方法。不要回避它,擁抱它。 – DGM
:)好的。擁抱它。 –