多个值的 when
本课属于 Coddy Ruby 学习旅程的“逻辑与流程”单元。第 39 课,共 56 课。
单个 when 子句可以匹配多个值,值之间用逗号分隔。如果 subject 等于其中任意一个值,就会执行对应分支。
day = "Sat"
kind = case day
when "Sat", "Sun" then "weekend"
when "Mon", "Tue", "Wed", "Thu", "Fri" then "weekday"
end
puts kind # 周末这比在 if/elsif 中串联 || 简洁得多。
你还可以在一个 when 中混合使用不同类型的值:字符串、范围、正则表达式模式,它们都只是能够响应 === 的对象:
def describe(x)
case x
when 0, nil then "empty"
when 1..9 then "small"
when 10..99 then "medium"
when /^huge:/i then "flagged huge"
end
end选择最容易一眼看清各个分支的形式。
挑战
简单读取一个字符(一行输入)。使用 case 和包含多个值的 when 分支,打印以下其中一个值:
vowel:输入是a, e, i, o, u中的一个(不区分大小写,先将输入转换为小写)digit:输入是0..9中的一个(使用范围)punctuation:输入是.、,、!、?中的一个other:其他任何输入
将输入视为单字符字符串。使用类似 "0".."9" 的范围测试数字分支。
输入 E 时,输出为 vowel;输入 7 时,输出为 digit;输入 ! 时,输出为 punctuation。
亲手试试
ch = gets.chomp
# TODO:使用 case ch.downcase ...,并在 when 分支中匹配多个值
这节课包含一个小测验。开始学习即可作答,并记录你的进度。
逻辑与流程中的所有课
自己练习: Ruby 在线编译器