使用ruby三元运算符来放置一个值并增加一个变量

时间:2013-03-22 19:32:30

标签: ruby ternary-operator

如果测试为真,我想放1,如果不是,则放0。我还想增加一个计数器,每次测试成功时计数。我现在有这个:

puts test1 ? sum += 1 : 0
puts test2 ? sum += 1 : 0
puts test3 ? sum += 1 : 0
puts test4 ? sum += 1 : 0

很明显,问题在于,如果我每次递增总和,那么我不是打印1而是总和的值。

我尝试制作一个递增总和的小方法然后像这样返回1:

def inc_sum_ret_1(sum)
  sum += 1
  1
end

并称之为“sum + = 1”。当然,这每次只增加0到1。

这样做有好办法吗?从知识分子的角度来看,我更好奇,而不是让我的代码特别整洁。

1 个答案:

答案 0 :(得分:4)

好吧,我认为您要编写的代码是

puts test1 ? (sum += 1; 1) : 0
puts test2 ? (sum += 1; 1) : 0
puts test3 ? (sum += 1; 1) : 0
puts test4 ? (sum += 1; 1) : 0

但当然这不是很多代码。在代码清晰度和消除重复方面,只使用if会好得多。