推荐答案
case expression when value1 # 当 expression 等于 value1 时执行的代码 when value2 # 当 expression 等于 value2 时执行的代码 else # 当 expression 不等于任何 when 子句中的值时执行的代码 end
本题详细解读
1. 基本语法
case-when 语句是 Ruby 中用于多条件分支控制的结构。它的基本语法如下:
case expression when value1 # 当 expression 等于 value1 时执行的代码 when value2 # 当 expression 等于 value2 时执行的代码 else # 当 expression 不等于任何 when 子句中的值时执行的代码 end
expression是需要进行匹配的表达式或变量。when子句用于指定匹配的值或条件。else子句是可选的,用于处理所有when子句都不匹配的情况。
2. 匹配规则
case-when 语句使用 === 运算符进行匹配。这意味着 when 子句中的值可以是任何支持 === 运算符的对象,包括类、范围、正则表达式等。
例如:
case 5 when 1..10 puts "在 1 到 10 之间" when 11..20 puts "在 11 到 20 之间" else puts "不在范围内" end
在这个例子中,5 匹配了 1..10 的范围,因此会输出 "在 1 到 10 之间"。
3. 多个条件
可以在一个 when 子句中指定多个条件,使用逗号分隔:
case "apple" when "banana", "orange" puts "这是香蕉或橙子" when "apple", "grape" puts "这是苹果或葡萄" else puts "未知水果" end
在这个例子中,"apple" 匹配了第二个 when 子句,因此会输出 "这是苹果或葡萄"。
4. 使用正则表达式
when 子句还可以使用正则表达式进行匹配:
case "hello" when /^h/ puts "以 h 开头" when /^w/ puts "以 w 开头" else puts "不以 h 或 w 开头" end
在这个例子中,"hello" 匹配了第一个正则表达式 /^h/,因此会输出 "以 h 开头"。
5. 使用类进行匹配
when 子句还可以使用类进行匹配:
case 42 when Integer puts "这是一个整数" when String puts "这是一个字符串" else puts "未知类型" end
在这个例子中,42 是 Integer 类的实例,因此会输出 "这是一个整数"。
6. 省略 expression
case 语句可以省略 expression,此时 when 子句会直接对条件进行求值:
case when 2 + 2 == 4 puts "2 + 2 等于 4" when 2 + 2 == 5 puts "2 + 2 等于 5" else puts "其他情况" end
在这个例子中,第一个 when 子句的条件为真,因此会输出 "2 + 2 等于 4"。