شرط if...elsif...else در روبی

ساختار شرطی if، elsif، else، unless و شرط‌های تو در تو در روبی

ساختار شرط if

ساده‌ترین ساختار شرطی در روبی if است:

age = 20

if age >= 18
  puts "شما بزرگ‌سال هستید"
end

if...else

age = 15

if age >= 18
  puts "بزرگ‌سال"
else
  puts "کودک"
end

if...elsif...else

برای چند شرط پشت سر هم:

score = 17

if score >= 18
  puts "عالی! 🌟"
elsif score >= 15
  puts "خوب"
elsif score >= 10
  puts "قبول"
else
  puts "مردود"
end

unless — برعکس if

unless یعنی «اگر نه» — وقتی شرط غلط باشد اجرا می‌شود:

is_raining = false

unless is_raining
  puts "هوا صاف است — بیرون برو!"
end

# معادل:
if !is_raining
  puts "هوا صاف است"
end

شرط یک‌خطی (Modifier if)

روبی امکان نوشتن شرط در یک خط را می‌دهد:

# if در انتهای خط
puts "بزرگ‌سال" if age >= 18

# unless در انتهای خط
puts "خطا" unless valid

عملگر سه‌تایی (Ternary)

یک شرط کوتاه در یک خط:

age = 20
status = age >= 18 ? "بزرگ‌سال" : "کودک"
puts status  # => بزرگ‌سال

&& و || برای مقادیر

در روبی، && و || آخرین مقدار ارزیابی‌شده را برمی‌گردانند:

# || برای مقدار پیش‌فرض
name = nil
display_name = name || "ناشناس"
puts display_name  # => ناشناس

# ||= برای انتساب شرطی
count ||= 0  # اگر count nil/false باشد، 0 می‌شود

شرط‌های تو در تو

age = 25
has_license = true

if age >= 18
  if has_license
    puts "می‌توانید رانندگی کنید"
  else
    puts "بزرگ‌سال هستید اما گواهینامه ندارید"
  end
else
  puts "کودک هستید"
end

truthy و falsy

در روبی، فقط nil و false falsy هستند. همه چیز دیگر truthy است — حتی 0 و ""!

puts "0 is truthy" if 0      # => چاپ می‌شود!
puts "empty string" if ""   # => چاپ می‌شود!
puts "nil" if nil           # => چاپ نمی‌شود
puts "false" if false       # => چاپ نمی‌شود
برخلاف برخی زبان‌ها، در روبی 0 و "" truthy هستند!

خلاصه

ساختارتوضیح
if...endاگر شرط درست باشد
if...else...endاگر/در غیر این صورت
if...elsif...else...endچند شرط
unless...endاگر نه
stmt if conditionشرط یک‌خطی
cond ? a : bعملگر سه‌تایی

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

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