Ruby case Statement

The case statement in Ruby allows us to execute a block of code among many alternatives.

You can do the same thing with multiple if...elsif...else statements. However, the syntax of the case statement is much easier to read and write.


Syntax of the case Statement

 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

How does the case statement work?

The expression is evaluated once and compared with each when value using the == operator.

  • If there is a match, the code under that when label is executed. For example, if expression == value2 is true, the code after when value2 is executed.
  • If there is no match, the code inside the else block runs (if provided).

Flowchart of case Statement

Ruby case Statement Flowchart
Flowchart of Ruby case Statement

Example 1: Simple Size Checker Using case Statement

 # 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

Output

 Large

In the above example, we have used the case statement to find the size. Here, we have a variable number which is compared with each value in the when clauses.

Since the value matches with 44, the code inside when 44 is executed.

 puts "Large"

Example 2: Simple Calculator Using case Statement

 # 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

Sample Output 1

 Enter an operator (+, -, *, /): + Enter first number: 6 Enter second number: 3 6.0 + 3.0 = 9.0

Sample Output 2

 Enter an operator (+, -, *, /): * Enter first number: 6 Enter second number: 3 6.0 * 3.0 = 18.0

In the above program, we prompted the user to:

  • Enter an operator: +, -, *, or /.
  • Enter the first number: num1.
  • Enter the second number: num2.

Based on the user input, the case statement performs the corresponding calculation.

If the input operator is not recognized, the program shows an Invalid operator message.


More on Ruby case Statement

Using 'then' in when clauses

You can write the when condition and the code to execute on the same line using then keyword. For example,

 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

Notice that we haven't used then with the else statement; it's only used with when.

Using 'case' without an expression

Ruby allows you to use a case statement without an expression. In this form, each when clause acts like an if condition. For example,

 age = 25 case when age < 13 puts "Child" when age < 20 puts "Teen" when age < 60 puts "Adult" else puts "Senior" end # Output: Adult

The above code is equivalent to:

 age = 25 if age < 13 puts "Child" elsif age < 20 puts "Teen" elsif age < 60 puts "Adult" else puts "Senior" end
Using multiple values in one 'when'

You can match multiple values in a single when by separating them with commas. For example,

 day = "Sunday" case day when "Saturday", "Sunday" puts "It is the weekend!" else puts "It is a weekday." end # Output: It is the weekend!

Your builder path starts here. Builders don't just know how to code, they create solutions that matter.

Escape tutorial hell and ship real projects.

Try Programiz PRO
  • Real-World Projects
  • On-Demand Learning
  • AI Mentor
  • Builder Community