ویژگی‌ها (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 :xgetterفقط خواندنی
attr_writer :xsetterفقط نوشتنی
attr_accessor :xgetter + setterخواندنی/نوشتنی

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

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