سینتکس روبی
ساختار کلی کدهای روبی، کلمه کلیدی 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
۳. پایان دستورات
در روبی نیازی به نقطه ویرگول در پایان خط نیست:
# روبی — بدون نقطه ویرگول
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_case | user_name |
| متغیر نمونه | @snake_case | @name |
| متغیر کلاس | @@snake_case | @@count |
| متغیر سراسری | $snake_case | $global |
| ثابت | UPPER_CASE | MAX_SIZE |
| کلاس/ماژول | PascalCase | MyClass |
| متد | snake_case | calculate_total |
| نماد (Symbol) | :name | :status |
۶. بلوکهای کد
بلوکهای کد در روبی با do...end یا آکولاد { } نوشته میشوند:
# با do...end (برای بلوکهای چندخطی)
[1, 2, 3].each do |item|
puts item
end
# با { } (برای بلوکهای یکخطی)
[1, 2, 3].each { |item| puts item }
۷. متدها با علامت سؤال و تعجب
روبی قرارداد جالبی دارد:
?در انتهای متد یعنی یک مقدار بولین برمیگرداند (مثلempty?)!در انتهای متد یعنی شی را تغییر میدهد (مثلupcase!)
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 |
| تورفتگی | ۲ فاصله (توصیهشده، اجباری نیست) |
| پرانتز | اغلب اختیاری |
| کامنت | با # |
این مبحث بخشی از دوره آموزش کامل روبی است.