Что такое attr_reader, attr_writer, attr_accessor и зачем они?
Этот вопрос проверяет знание способов работы с переменными экземпляра через методы доступа.
Короткий ответ
attr_reader создает геттер, attr_writer — сеттер, а attr_accessor — оба метода. Они позволяют упрощенно создавать методы для работы с переменными экземпляра.
Длинный ответ
Вместо ручного создания геттеров и сеттеров, Ruby предлагает упрощенные способы:
attr_reader создаёт метод для чтения значения переменной.
attr_writer создаёт метод для записи значения.
attr_accessor создаёт оба метода.
Пример:
class Car
attr_reader :make
attr_writer :color
attr_accessor :year
def initialize(make, year)
@make = make
@year = year
end
end
car = Car.new("Toyota", 2020)
puts car.make # => Toyota
car.color = "Red" # Устанавливаем цвет
car.year = 2021 # Изменяем год
puts car.year # => 2021 Используйте атрибуты для сокращения кода и улучшения читаемости.