شرط 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/when | if...elsif |
|---|---|---|
| خوانایی | بالاتر برای مقایسه چندگانه | منعطفتر |
| مقایسه | با === مقایسه میکند | شرط آزاد |
| کاربرد | یک متغیر، چند مقدار | شرطهای پیچیده |
خلاصه
| ساختار | توضیح |
|---|---|
case...when...else...end | ساختار پایه |
when val1, val2 | چند مقدار |
when Type | بررسی نوع |
when start..end | با Range |
when /pattern/ | با RegEx |
when ... then ... | یکخطی |
این مبحث بخشی از دوره آموزش کامل روبی است.