Ruby 中的 case
语句允许我们在多个选项中执行一段代码。
您可以使用多个 if...elsif...else 语句做同样的事情。但是,case
语句的语法更容易阅读和编写。
case 语句的语法
case expression
when value1
# Code to run if expression == value1
when value2
# Code to run if expression == value2
...
else
# Code to run if none of the 'when' conditions match
end
case 语句是如何工作的?
expression
被计算一次,并使用 ==
运算符与每个 when
值进行比较。
- 如果匹配,则执行该
when
标签下的代码。例如,如果expression == value2
为true
,则执行when value2
之后 的代码。 - 如果没有匹配,则运行
else
块中的代码(如果提供了)。
case 语句流程图

示例 1:使用 case 语句的简单尺寸检查器
# Ruby program to check the size
# using the case statement
number = 44
case number
when 29
puts "Small"
when 42
puts "Medium"
when 44
puts "Large"
when 48
puts "Extra Large"
else
puts "Unknown"
end
输出
Large
在上面的示例中,我们使用 case
语句来查找尺寸。这里,我们有一个变量 number,它与 when
子句中的每个值进行比较。
由于该值与 **44** 匹配,因此执行 when 44
内的代码。
puts "Large"
示例 2:使用 case 语句的简单计算器
# Program to build a simple calculator
# using case statement
print "Enter an operator (+, -, *, /): ";
operator = gets.chomp
print "Enter first number: "
num1 = gets.chomp.to_f
print "Enter second number: "
num2 = gets.chomp.to_f
case operator
when "+"
print "#{num1} + #{num2} = #{num1 + num2}"
when "-"
print "#{num1} - #{num2} = #{num1 - num2}"
when "*"
print "#{num1} * #{num2} = #{num1 * num2}"
when "/"
if num2 == 0
print "Cannot divide by zero."
else
print "#{num1} / #{num2} = #{num1 / num2}"
end
else
# Invalid operator handling
print "Invalid operator!"
end
示例输出 1
Enter an operator (+, -, *, /): + Enter first number: 6 Enter second number: 3 6.0 + 3.0 = 9.0
示例输出 2
Enter an operator (+, -, *, /): * Enter first number: 6 Enter second number: 3 6.0 * 3.0 = 18.0
在上面的程序中,我们提示用户
- **输入一个运算符:**
+
、-
、*
或/
。 - **输入第一个数字:**
num1
。 - **输入第二个数字:**
num2
。
根据用户输入,case
语句执行相应的计算。
如果输入的运算符不被识别,程序将显示 无效的运算符
消息。
更多关于 Ruby case 语句
在 when 子句中使用 'then'
您可以使用 then
关键字将 when
条件和要执行的代码写在同一行上。例如,
number = 2
case number
when 1 then puts "One"
when 2 then puts "Two"
when 3 then puts "Three"
else puts "Other"
end
# Output: Two
请注意,我们没有在 else
语句中使用 then
;它只与 when
一起使用。
不带表达式的 'case' 使用
Ruby 允许您使用不带表达式的 case
语句。在这种形式下,每个 when
子句都像一个 if
条件。例如,
age = 25
case
when age < 13
puts "Child"
when age < 20
puts "Teen"
when age < 60
puts "Adult"
else
puts "Senior"
end
# Output: Adult
上面的代码等同于
age = 25
if age < 13
puts "Child"
elsif age < 20
puts "Teen"
elsif age < 60
puts "Adult"
else
puts "Senior"
end
在一个 'when' 中使用多个值
您可以通过用逗号分隔它们来在一个 when
中匹配多个值。例如,
day = "Sunday"
case day
when "Saturday", "Sunday"
puts "It is the weekend!"
else
puts "It is a weekday."
end
# Output: It is the weekend!