Ruby case 语句

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 == value2true,则执行 when value2 之后 的代码。
  • 如果没有匹配,则运行 else 块中的代码(如果提供了)。

case 语句流程图

Ruby case Statement Flowchart
Ruby 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!
你觉得这篇文章有帮助吗?

我们的高级学习平台,凭借十多年的经验和数千条反馈创建。

以前所未有的方式学习和提高您的编程技能。

试用 Programiz PRO
  • 交互式课程
  • 证书
  • AI 帮助
  • 2000+ 挑战