私は私がこのように成功し、それを書くことができます知っている:ブロック内に割当ててブレークする方法はありますか?
def test_find_first_multiple_of_3
numbers = [2, 8, 9, 27, 24, 5]
found = nil
numbers.each do |number|
if number % 3 == 0
found = number
break
end
end
assert_equal 9, found
end
は、ブロック内で行うにはとにかくはありますか?私は何が欠けていますか?それともできないのですか?
found = numbers.find { |n| (n % 3).zero? }
この方法で、あなたのループを切断する必要はありません。他の回答で指摘したように
numbers.each { |n| n % 3 == 0 ? (found = n then break) : nil }
def test_find_first_multiple_of_3
numbers = [2, 8, 9, 27, 24, 5]
found = nil
numbers.each { |n| n % 3 == 0 ? (found = n then break) : nil }
assert_equal 9, found
end
は ''(= Nその後、壊れた)のようなものをしないでください使用することができます。条件付きテストのミキシング割り当ては、意図しない割り当てのように見えるため、読みやすさやメンテナンスに害を及ぼし、3AMで破損するプロダクションコードでは、プログラミングの選択肢が少ないため、実際に同僚を苛立たせる可能性があります。簡潔なコードを書けるからといって、私たちはすべきではありません。 –