Книга: Программирование на языке Ruby

11.1.2. Создание атрибутов экземпляра

11.1.2. Создание атрибутов экземпляра

Имени атрибута экземпляра в Ruby всегда предшествует знак @. Это обычная переменная в том смысле, что она начинает существовать после первого присваивания.

В ОО-языках часто создаются методы для доступа к атрибутам, чтобы обеспечить сокрытие данных. Мы хотим контролировать доступ к «внутренностям» объекта извне. Обычно для данной цели применяются методы чтения и установки (getter и setter), хотя в Ruby эта терминология не используется. Они просто читают (get) или устанавливают (set) значение атрибута.

Можно, конечно, запрограммировать такие функции «вручную», как показано ниже:

class Person
 def name
  @name
 end
 def name=(x)
  @name = x
 end
 def age
  @age
 end
 # ...
end

Ho Ruby предоставляет более короткий способ. Метод attr принимает в качестве параметра символ и создает соответствующий атрибут. Кроме того, он создает одноименный метод чтения, а если необязательный второй параметр равен true, то и метод установки.

class Person
 attr :name, true # Создаются @name, name, name=
 attr :age        # Создаются @age, age
end

Методы attr_reader, attr_writer и attr_accessor принимают в качестве параметров произвольное число символов. Первый создает только «методы чтения» (для получения значения атрибута); второй — только «методы установки», а третий — то и другое. Пример:

class SomeClass
 attr_reader :a1, :a2   # Создаются @a1, a1, @a2, a2
 attr_writer :b1, :b2   # Создаются @b1, b1=, @b2, b2 =
 attr_accessor :c1, :c2 # Создаются @c1, c1, c1=, @c2, c2, c2=
 # ...
end

Напомним, что для выполнения присваивания атрибуту необходимо указывать вызывающий объект, а внутри метода нужно в качестве такого объекта указывать self.

Оглавление книги


Генерация: 1.157. Запросов К БД/Cache: 3 / 0
поделиться
Вверх Вниз