Ruby问题:
我可以缩短以下代码:
total = Paper.where(available: true).count
puts total if total > 0
我想像这样的东西,但我不知道是否可能:
puts Paper.where(available: true).count if itself > 0
有没有办法在一个简单的行中写出这个想法?
答案 0 :(得分:4)
if (total = Paper.where(available: true).count) > 0 then puts total end
更新:您可以使用实例变量
puts @total if (@total = Paper.where(available: true).count) > 0
答案 1 :(得分:1)
你所拥有的一切都是完美的。为了好玩,您可以使用Object#tap作为单行代码:
Paper.where(available: true).count.tap { |total| puts total if total > 0 }
答案 2 :(得分:0)
我最能想到的就是这样:
total = Paper.where(available: true).count; puts total if total > 0
除了用分号而不是新行分隔线之外,它与原始的完全相同。它的可读性往往较低,所以我通常会避免这样做。
作为旁注,虽然我明白你要做什么,老实说,将你的代码从2行减少到1并不是什么大问题。坦率地说,它的方式很好。