在 case / when 中使用范围
本课属于 Coddy Ruby 学习旅程的“逻辑与流程”单元。第 8 课,共 56 课。
范围在 Ruby 的 case 语句中非常实用。许多语言需要用一连串带比较运算符的 if/elsif,而 Ruby 可以直接用范围匹配值。
score = 78
grade = case score
when 90..100 then "A"
when 80..89 then "B"
when 70..79 then "C"
when 60..69 then "D"
else "F"
end
puts grade # C在幕后,when 70..79 使用范围的 === 运算符,它等同于 (70..79).include?(score)。
case 形式比冗长的 if/elsif 链更短、更易读,也更容易编写。
挑战
简单读取一个用逗号分隔的整数年龄列表。对于每个年龄,使用 case 语句按范围进行分类:
0..12:Child13..19:Teen20..64:Adult65或更高:Senior- 其他情况(负数):跳过,不计入报告
按照以下固定顺序,为每个非零类别打印一行计数:Child、Teen、Adult、Senior。跳过人数为零的类别。计数之后,打印 Skipped: <n>,其中 n 是负数(无效)年龄的数量。
对于输入 5,15,30,70,-3,40,12,输出为:
Child: 2
Teen: 1
Adult: 2
Senior: 1
Skipped: 1亲手试试
ages = gets.chomp.split(",").map(&:to_i)
# TODO:用 case 和范围对每个年龄分类,统计各类别的人数,并打印报告
这节课包含一个小测验。开始学习即可作答,并记录你的进度。
逻辑与流程中的所有课
自己练习: Ruby 在线编译器