سینتکس روبی

ساختار کلی کدهای روبی، کلمه کلیدی end، حساسیت به حروف و قوانین نحوی

ساختار کلی یک برنامه روبی

سینتکس (Syntax) یعنی قواعد نوشتاری یک زبان. در این مبحث، قوانین نحوی روبی را یاد می‌گیریم.

یک برنامه ساده روبی:

# این یک کامنت است
name = "علی"          # تعریف متغیر
if name == "علی"      # شرط
  puts "سلام علی!"    # اجرا اگر شرط درست باشد
end                   # پایان بلوک

۱. کلمه کلیدی end — مهم‌ترین تفاوت!

در روبی، بلوک‌های کد با کلمه کلیدی end تمام می‌شوند. این جایگزین آکولاد { } در زبان‌های دیگر است.

if 5 > 2
  puts "پنج بزرگ‌تر از دو است!"
end

def greet(name)
  puts "سلام #{name}!"
end

3.times do
  puts "تکرار"
end
فراموش کردن end یکی از رایج‌ترین خطاهای مبتدیان است! همیشه بررسی کنید که هر if، def، class، do یک end متناظر دارد.

۲. تورفتگی (Indentation)

برخلاف پایتون، تورفتگی در روبی اجباری نیست، اما برای خوانایی توصیه می‌شود:

# بدون تورفتگی (کار می‌کند اما زشت!)
if true
puts "سلام"
end

# با تورفتگی (زیبا و خوانا)
if true
  puts "سلام"
end
استاندارد روبی ۲ فاصله برای تورفتگی است (نه Tab).

۳. پایان دستورات

در روبی نیازی به نقطه ویرگول در پایان خط نیست:

# روبی — بدون نقطه ویرگول
name = "علی"
puts name

چند دستور در یک خط

اگر بخواهید چند دستور را در یک خط بنویسید، باید از نقطه ویرگول استفاده کنید:

a = 1; b = 2; c = 3
puts a, b, c

۴. حساسیت به حروف (Case Sensitivity)

روبی به حروف بزرگ و کوچک حساس است:

name = "علی"     # متغیر محلی (حرف کوچک)
Name = "ثابت"    # ثابت (حرف بزرگ)

puts name        # علی
puts Name        # ثابت
کلمات کلیدی روبی همگی با حروف کوچک نوشته می‌شوند: if, def, end, class و... IF یا If کار نمی‌کنند!

۵. قراردادهای نام‌گذاری

نوعقراردادمثال
متغیر محلیsnake_caseuser_name
متغیر نمونه@snake_case@name
متغیر کلاس@@snake_case@@count
متغیر سراسری$snake_case$global
ثابتUPPER_CASEMAX_SIZE
کلاس/ماژولPascalCaseMyClass
متدsnake_casecalculate_total
نماد (Symbol):name:status

۶. بلوک‌های کد

بلوک‌های کد در روبی با do...end یا آکولاد { } نوشته می‌شوند:

# با do...end (برای بلوک‌های چندخطی)
[1, 2, 3].each do |item|
  puts item
end

# با { } (برای بلوک‌های یک‌خطی)
[1, 2, 3].each { |item| puts item }

۷. متدها با علامت سؤال و تعجب

روبی قرارداد جالبی دارد:

name = "ali"
puts name.empty?    # => false
puts name.upcase    # => "ALI" (تغییر نمی‌دهد)
puts name           # => "ali" (تغییر نکرده)
puts name.upcase!   # => "ALI" (تغییر می‌دهد!)
puts name           # => "ALI" (حالا تغییر کرده)

۸. پرانتز — اختیاری در بسیاری از موارد

در روبی، پرانتز در فراخوانی متدها اغلب اختیاری است:

# هر دو یکسان هستند
puts("سلام")
puts "سلام"

# در تعریف متد هم
def greet(name)
  puts "سلام #{name}"
end

greet("علی")
greet "علی"
برای خوانایی بهتر، استفاده از پرانتز توصیه می‌شود، مگر در موارد ساده مثل puts.

۹. توضیحات (Comments)

کامنت‌ها با # شروع می‌شوند:

# این یک کامنت است
x = 5  # این هم کامنت است

۱۰. کلمات کلیدی روبی

این کلمات رزرو شده‌اند و نمی‌توانید به‌عنوان نام متغیر استفاده کنید:

BEGIN, END, alias, and, begin, break, case, class, def,
defined?, do, else, elsif, end, ensure, false, for, if, in,
module, next, nil, not, or, redo, rescue, retry, return, self,
super, then, true, undef, unless, until, when, while, yield

خلاصه

قانونتوضیح
پایان بلوکبا end
پایان خطبدون نقطه ویرگول (اختیاری)
حساسیت به حروفName ≠ name
تورفتگی۲ فاصله (توصیه‌شده، اجباری نیست)
پرانتزاغلب اختیاری
کامنتبا #

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

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