我可能会写成这样。这是一个老派的事情:
(1..15).each do |number|
case
when (number % 3 == 0) && (number % 5 == 0)
puts "(#{ number }) Hello World"
when (number % 3 == 0)
puts "(#{ number }) Hello"
when (number % 5 == 0)
puts "(#{ number }) World"
else
puts number
end
end
# >> 1
# >> 2
# >> (3) Hello
# >> 4
# >> (5) World
# >> (6) Hello
# >> 7
# >> 8
# >> (9) Hello
# >> (10) World
# >> 11
# >> (12) Hello
# >> 13
# >> 14
# >> (15) Hello World
这是我真正写它的方式:
(1..15).each do |number|
val = case
when (number % 3 == 0) && (number % 5 == 0)
"Hello World"
when (number % 3 == 0)
"Hello"
when (number % 5 == 0)
"World"
else
number
end
puts val
end
这更干净,更具可读性。虽然可以使用case 0
,但每个测试都when
变得不太容易理解,这是我们编写代码时的首要考虑因素。我们为至少两个人写作,现在是我们自己,也是为将来维护它的人写作。它需要在任何时候都有意义,所以代码越明显和干净,它在几年内阅读时进入大脑的速度就越快,从而减少调试时间和未来你的工作量。