دستور if…elsif…else

اگر بخواهید چند شرط را بررسی کنید چکار می‌کنید؟ می‌توانید از چندین دستور if استفاده کنید و بهتر است که این دستورات if را به صورت زیر بنویسید :

if (condition) 
  code to execute 
else 
  if (condition)
        code to execute
  else
        if (condition)
            code to execute
        else 
          code to execute
        end
  end 
end 

خواندن کد بالا سخت است. بهتر است دستورات را به صورت تو رفتگی در داخل بلوک else بنویسید. می‌توانید کد بالا را ساده‌تر کنید :

if (condition1)
    code to execute1
elsif (condition2)
    code to execute2
elsif (condition n)
    code to execute3
else
    code to execute4
end

حال که نحوه استفاده از دستور if else را یاد گرفتید باید بدانید که مانند else ،elif نیز به دستور if وابسته است. دستور elif وقتی اجرا می‌شود که اولین دستور if اشتباه باشد حال اگر elif اشتباه باشد دستور elif بعدی اجرا می‌شود. و اگر آن نیز اجرا نشود در نهایت دستور else اجرا می‌شود. برنامه زیر نحوه استفاده از دستورelif را نشان می‌دهد :

 1: puts 'What\'s your favorite color?'
 2: puts '[1] Black'
 3: puts '[2] White'
 4: puts '[3] Blue'
 5: puts '[4] Red'
 6: puts '[5] Yellown'
 7: 
 8: print 'Enter your choice: '
 9: choice = gets.to_i
10: 
11: if choice == 1
12:   puts 'You might like my black t-shirt.'
13: elsif choice == 2
14:   puts 'You might be a clean and tidy person.'
15: elsif choice == 3
16:   puts 'You might be sad today.'
17: elsif choice == 4
18:   puts 'You might be inlove right now.'
19: elsif choice == 5
20:   puts 'Lemon might be your favorite fruit.'
21: else
22:   puts 'Sorry, your favorite color is not in the choices above.'
23: end
What's your favorite color?
[1] Black
[2] White
[3] Blue
[4] Red
[5] Yellow

Enter your choice: 1
You might like my black t-shirt.
What's your favorite color?
[1] Black
[2] White
[3] Blue
[4] Red
[5] Yellow

Enter your choice: 999
Sorry, your favorite color is not in the choices above.

خروجی برنامه بالا به متغیر choice وابسته است. بسته به اینکه شما چه چیزی انتخاب می‌کنید پیغامهای مختلفی چاپ می‌شود. اگر عددی که شما تایپ می‌کنید در داخل حالتهای انتخاب نباشد کد مربوط به بلوک else اجرا می‌شود.