これを試してみてください。
def evaluate(number)
case number
when -Float::INFINITY...0
puts "#{number} is negative"
when 0..50
puts "#{number} is between 0 and 51"
when 51..100
puts "#{number} is between 51 and 100"
else
puts "#{number} is greater than 100"
end
end
puts evaluate(-43)
# -43 is negative
puts evaluate(0)
# 0 is between 0 and 51
puts evaluate(27)
# 27 is between 0 and 51
puts evaluate(100)
# 100 is between 51 and 100
puts evaluate(9999)
# 9999 is greater than 100
case文は比較に===
を使用しているためまた、あなたが効果的に上記の最初のcase文で起こっていることである
def evaluate(number)
case
when number < 0
puts "#{number} is negative"
when (0..50) === number
puts "#{number} is between 0 and 51"
when (51..100) === number
puts "#{number} is between 51 and 100"
else
puts "#{number} is greater than 100"
end
end
を書くことができます。
Range#===を参照してください。 "obj [引数]が範囲の要素であれば真を返し、そうでない場合は偽を返します。"換言すれば、(1..10) === number
は(1..10).include?(number)
の場合にのみtrue
となります。
私はこの代替手段を主張していません。ケースステートメントで何が起こっているのかを示すのに役立ちました。以下は私がよく読むと思う一つの選択肢です。
def evaluate(number)
case
when number < 0
puts "#{number} is negative"
when number <= 50
puts "#{number} is between 0 and 51"
when number <= 100
puts "#{number} is between 51 and 100"
else
puts "#{number} is greater than 100"
end
end
このコードは、いくつかの 'end'ステートメントが欠けているように、不完全に見えます。字下げで十分ですが、Pythonに使用されていますか? – tadman