شرط case/when در روبی

ساختار case/when/else برای شرط‌های چندگانه و then در روبی

case/when چیست؟

case/when جایگزین تمیزی برای if...elsif زمانی است که یک متغیر را با چند مقدار مقایسه می‌کنید.

ساختار پایه

day = "دوشنبه"

case day
when "شنبه", "یکشنبه"
  puts "آخر هفته! 🎉"
when "دوشنبه", "سه‌شنبه", "چهارشنبه"
  puts "وسط هفته"
else
  puts "روز کاری"
end

case با then (یک‌خطی)

score = 17

grade = case score
when 18..20 then "عالی"
when 15..17 then "خوب"
when 12..14 then "متوسط"
when 10..11 then "قبول"
else "مردود"
end

puts grade  # => خوب

case با نوع (Class)

value = 42

case value
when Integer
  puts "عدد صحیح"
when Float
  puts "عدد اعشاری"
when String
  puts "رشته"
when Array
  puts "آرایه"
when Hash
  puts "هش"
else
  puts "نوع دیگر"
end

case با Range

age = 25

case age
when 0..12
  puts "کودک"
when 13..19
  puts "نوجوان"
when 20..35
  puts "جوان"
when 36..60
  puts "میان‌سال"
else
  puts "بزرگ‌سال"
end

case با RegEx

text = "ali@example.com"

case text
when /^\d+$/
  puts "فقط عدد"
when /^[a-z]+$/i
  puts "فقط حرف"
when /@/
  puts "ایمیل"
else
  puts "متن معمولی"
end

case بدون مقدار (شرط‌های آزاد)

score = 17

case
when score >= 18
  puts "عالی"
when score >= 15
  puts "خوب"
when score >= 10
  puts "قبول"
else
  puts "مردود"
end

case به عنوان عبارت (Expression)

در روبی، case یک مقدار برمی‌گرداند:

day = 3
day_name = case day
  when 1 then "شنبه"
  when 2 then "یکشنبه"
  when 3 then "دوشنبه"
  when 4 then "سه‌شنبه"
  when 5 then "چهارشنبه"
  when 6 then "پنجشنبه"
  when 7 then "جمعه"
  else "نامعتبر"
end

puts day_name  # => دوشنبه

تفاوت case و if...elsif

ویژگیcase/whenif...elsif
خواناییبالاتر برای مقایسه چندگانهمنعطف‌تر
مقایسهبا === مقایسه می‌کندشرط آزاد
کاربردیک متغیر، چند مقدارشرط‌های پیچیده

خلاصه

ساختارتوضیح
case...when...else...endساختار پایه
when val1, val2چند مقدار
when Typeبررسی نوع
when start..endبا Range
when /pattern/با RegEx
when ... then ...یک‌خطی

این مبحث بخشی از دوره آموزش کامل روبی است.

ابزارهای مرتبط