متدها در روبی
تعریف متد، فراخوانی، پارامتر، return و متدهای بدون آرگومان در روبی
متد چیست؟
متد (Method) بلوکی از کد است که یک کار مشخص انجام میدهد و میتوان آن را چندین بار فراخوانی کرد. متدها کد را منظم، خوانا و قابل استفاده مجدد میکنند.
تعریف متد
با کلمه کلیدی def متد تعریف میشود و با end تمام میشود:
def greet
puts "سلام دنیا!"
end
# فراخوانی
greet # => سلام دنیا!
متد با پارامتر
def greet(name)
puts "سلام #{name}!"
end
greet("علی") # => سلام علی!
greet "مریم" # => سلام مریم! (پرانتز اختیاری)
متد با چند پارامتر
def add(a, b)
a + b
end
puts add(5, 3) # => 8
مقدار بازگشتی (Return)
در روبی، آخرین عبارت بهطور خودکار برگردانده میشود:
def square(n)
n ** 2 # این مقدار برگردانده میشود
end
puts square(5) # => 25
return صریح
def check_age(age)
return "کودک" if age < 18
"بزرگسال"
end
puts check_age(15) # => کودک
puts check_age(25) # => بزرگسال
متد بدون پارامتر با پرانتز
def time_now()
Time.now
end
puts time_now # پرانتز اختیاری است
puts time_now()
متدهای با علامت سؤال و تعجب
قرارداد روبی:
?— متد بولین برمیگرداند!— شی را تغییر میدهد (mutate)
def even?(n)
n % 2 == 0
end
def capitalize!(str)
str.upcase!
end
puts even?(4) # => true
متدهای پیشفرض شی (self)
در سطح بالای برنامه، self شی main است:
def whoami
self
end
puts whoami # => main
متدهای قابلفراخوانی روی شی
class Calculator
def add(a, b)
a + b
end
end
calc = Calculator.new
puts calc.add(5, 3) # => 8
متدهای کلاسی (Class Methods)
class MathHelper
def self.square(n)
n ** 2
end
end
puts MathHelper.square(5) # => 25
متدهای خصوصی (Private)
class User
def initialize(name)
@name = name
end
def display
"نام: #{format_name}"
end
private
def format_name
@name.upcase
end
end
user = User.new("ali")
puts user.display # => نام: ALI
# puts user.format_name # => ❌ خطا! متد خصوصی است
خلاصه
| عملیات | سینتکس |
|---|---|
| تعریف | def name...end |
| فراخوانی | name یا name() |
| با پارامتر | def f(a, b) |
| return | return val یا آخرین عبارت |
| بولین | def valid? |
| تغییر | def save! |
| کلاسی | def self.method |
| خصوصی | private |
این مبحث بخشی از دوره آموزش کامل روبی است.