ویژگیها (Attributes) در روبی
attr_accessor، attr_reader، attr_writer و دسترسی به ویژگیهای کلاس
ویژگی (Attribute) چیست؟
ویژگیها متغیرهای نمونهای هستند که از بیرون کلاس قابل دسترسی هستند. روبی با attr_* بهطور خودکار متدهای getter و setter میسازد.
بدون attr (دستی)
class Person
def initialize(name)
@name = name
end
# Getter
def name
@name
end
# Setter
def name=(value)
@name = value
end
end
p = Person.new("علی")
puts p.name # => علی (getter)
p.name = "مریم" # (setter)
puts p.name # => مریم
attr_reader — فقط خواندنی
class Person
attr_reader :name, :age
def initialize(name, age)
@name = name
@age = age
end
end
p = Person.new("علی", 25)
puts p.name # => علی
puts p.age # => 25
# p.name = "مریم" # ❌ خطا! فقط خواندنی
attr_writer — فقط نوشتنی
class Person
attr_writer :name
def initialize(name)
@name = name
end
end
p = Person.new("علی")
p.name = "مریم" # ✅ (setter)
# puts p.name # ❌ خطا! فقط نوشتنی
attr_accessor — خواندنی و نوشتنی
class Person
attr_accessor :name, :age
def initialize(name, age)
@name = name
@age = age
end
end
p = Person.new("علی", 25)
puts p.name # => علی (getter)
p.name = "مریم" # (setter)
puts p.name # => مریم
خلاصه
| دستور | متدهای ساختهشده | دسترسی |
|---|---|---|
attr_reader :x | getter | فقط خواندنی |
attr_writer :x | setter | فقط نوشتنی |
attr_accessor :x | getter + setter | خواندنی/نوشتنی |
این مبحث بخشی از دوره آموزش کامل روبی است.