시도해보십시오. case 문은 비교를 ===
을 사용하기 때문에 다른 방법
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
, 당신은 효과적으로 위에서 제시 한 첫 번째 경우 문에서 무슨 일이 일어나고있는 것입니다
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 [인수]가 범위의 요소이면 true를 반환하고 그렇지 않으면 false를 반환합니다." 즉 (1..10) === number
은 (1..10).include?(number)
인 경우에만 true
입니다.
저는이 대안을지지하지 않습니다. 나는 case 문에서 무슨 일이 벌어지고 있는지 보여주는 데 도움을 주었다. 다음은 내가 더 잘 읽을 수있는 대안 중 하나입니다.
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' 문이 누락되어있는 것처럼 불완전한 것처럼 보입니다. 들여 쓰기가 충분하여 파이썬에 사용 되었습니까? – tadman