Вопрос проверяет понимание механизмов доступа к данным в объектно-ориентированном Ruby.
Геттеры используются для получения значений переменных объекта, а сеттеры — для их изменения. Их можно определить вручную, но в Ruby есть специальные методы attr_reader, attr_writer и attr_accessor, которые упрощают создание геттеров и сеттеров.
В Ruby доступ к внутренним данным объекта реализуется через методы геттеров и сеттеров:
- Геттер — метод для чтения значения переменной.
- Сеттер — метод для изменения значения переменной.
Пример без сокращений:
class Car
def color
@color
end
def color=(value)
@color = value
end
end
car = Car.new
car.color = "red"
puts car.color # => "red"
Сокращенная версия с attr_accessor:
class Car
attr_accessor :color
end
car = Car.new
car.color = "blue"
puts car.color # => "blue"
- attr_reader создает только геттер.
- attr_writer создает только сеттер.
- attr_accessor создает и геттер, и сеттер.
Использование геттеров и сеттеров позволяет инкапсулировать данные и контролировать их доступ в объектах. Сокращенные методы attr_accessor и другие делают код чище и читаемее.