متدهای جادویی در روبی
متدهای to_s، <=>، each، method_missing و سایر متدهای جادویی روبی
متدهای جادویی چیست؟
متدهای جادویی متدهای خاصی هستند که روبی بهطور خودکار فراخوانی میکند.
to_s — نمایش رشتهای
class Person
def initialize(name)
@name = name
end
def to_s
"Person(#{@name})"
end
end
p = Person.new("علی")
puts p # => Person(علی)
puts "نتیجه: #{p}" # => نتیجه: Person(علی)
<=> — عملگر فضایی (برای sort)
class Product
attr_reader :price
def initialize(name, price)
@name = name
@price = price
end
def <=>(other)
@price <=> other.price
end
def to_s
"#{@name}: #{@price}"
end
end
products = [
Product.new("A", 100),
Product.new("B", 50),
Product.new("C", 200)
]
sorted = products.sort
puts sorted.inspect
method_missing — متد ناموجود
class Dynamic
def method_missing(name, *args)
"متد \#{name} با آرگومانهای \#{args.inspect} پیدا نشد!"
end
end
d = Dynamic.new
puts d.hello # => متد hello با آرگومانهای [] پیدا نشد!
puts d.greet("علی") # => متد greet با آرگومانهای ["علی"] پیدا نشد!
respond_to_missing?
class Dynamic
def method_missing(name, *args)
"پیدا نشد: #{name}"
end
def respond_to_missing?(name, include_private = false)
true # یا منطق خودتان
end
end
خلاصه
| متد | توضیح |
|---|---|
to_s | نمایش رشتهای |
<=> | مقایسه (sort) |
== | برابری |
method_missing | متد ناموجود |
each | پیمایش (Enumerable) |
این مبحث بخشی از دوره آموزش کامل روبی است.