0

テストが真の場合は 1 を入れ、そうでない場合は 0 を入れたいと思います。また、テストが成功するたびにカウントするカウンターをインクリメントしたいと思います。私は今これを持っています:

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

明らかに問題は、毎回 sum をインクリメントしている場合、1 を出力するのではなく、sum の値を出力することです。

合計をインクリメントしてから、次のように 1 を返す小さなメソッドを作成してみました。

def inc_sum_ret_1(sum)
  sum += 1
  1
end

それを「sum += 1」の代わりに呼び出しました。もちろん、これは毎回 0 から 1 に増加するだけです。

これを行う良い方法はありますか?私は自分のコードを特に整頓するよりも、知的な観点から興味があります。

4

1 に答える 1

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コードの明瞭さと繰り返しの排除の両方の観点から、単に を使用する方がはるかに優れています。

于 2013-03-22T19:39:10.483 に答える