Menu
CoddyTech

多个值的 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

选择最容易一眼看清各个分支的形式。

challenge icon

挑战

简单

读取一个字符(一行输入)。使用 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 分支中匹配多个值
quiz icon自我测试

这节课包含一个小测验。开始学习即可作答,并记录你的进度。

逻辑与流程中的所有课

自己练习: Ruby 在线编译器