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.
Более 800 000 книг и аудиокниг! 📚
Получи 2 месяца Литрес Подписки в подарок и наслаждайся неограниченным чтением
ПОЛУЧИТЬ ПОДАРОКДанный текст является ознакомительным фрагментом.
Читайте также
Элемент <xsl:attribute>: создание новых атрибутов
Элемент <xsl:attribute>: создание новых атрибутов Аналогично тому, как вы можете создавать новые элементы при помощи <xsl:element> и устанавливать имя и содержимое элемента на этапе выполнения, при помощи элемента <xsl:attribute> это можно делать для атрибутов. У элемента два
Получение экземпляра объекта
Получение экземпляра объекта Но как нам получить экземпляр нужного объекта?— Экземпляры многих объектов создаются самим языком JavaScript, Web-обозревателем или библиотеками сторонних разработчиков.— Экземпляры некоторых объектов возвращаются функциями или методами
Свойства и методы экземпляра объекта
Свойства и методы экземпляра объекта Как мы уже знаем, объект определяет набор свойств и методов, которые затем станут "собственностью" всех его экземпляров. Иными словами, экземпляр объекта получит все свойства и методы, что объявлены в объекте, на основе которого он
3.3. Жизненный цикл экземпляра программы и «общая стоимость владения» им
3.3. Жизненный цикл экземпляра программы и «общая стоимость владения» им Жизненный цикл отдельного экземпляра программы, находящегося в эксплуатации, вообще говоря, не совпадает с жизненным циклом самой программы как произведения5.В простейшем, вырожденном случае
Получение экземпляра объекта
Получение экземпляра объекта Но как нам получить экземпляр нужного объекта?— Экземпляры многих объектов создаются самим языком JavaScript, Web-обозревателем или библиотеками сторонних разработчиков.— Экземпляры некоторых объектов возвращаются функциями или методами
Свойства и методы экземпляра объекта
Свойства и методы экземпляра объекта Как мы уже знаем, объект определяет набор свойств и методов, которые затем станут "собственностью" всех его экземпляров. Иными словами, экземпляр объекта получит все свойства и методы, что объявлены в объекте, на основе которого он
9.7. Запуск единственного экземпляра демона
9.7. Запуск единственного экземпляра демона Часто блокировки записей используются для обеспечения работы какой-либо пpoгрaммы (например, демона) в единственном экземпляре. Фрагмент кода, приведенный в листинге 9.8, должен выполняться при запуске демона.Листинг 9.8. Гарантия
11.1.4. Создание атрибутов и методов уровня класса
11.1.4. Создание атрибутов и методов уровня класса Метод или атрибут не всегда ассоциируются с конкретным экземпляром класса, они могут принадлежать самому классу. Типичным примером метода класса может служить new, он вызывается для создания новых экземпляров, а потому не
11.3.3. Динамическое создание экземпляра класса, заданного своим именем
11.3.3. Динамическое создание экземпляра класса, заданного своим именем Такой вопрос мы видели многократно. Пусть дана строка, содержащая имя класса; как можно создать экземпляр этого класса?Правильный способ — воспользоваться методом const_get, который мы только что
11.3.4. Получение и установка переменных экземпляра
11.3.4. Получение и установка переменных экземпляра Отвечая на пожелание употреблять eval как можно реже, в Ruby теперь включены методы, которые могут получить или присвоить новое значение переменной экземпляра, имя которой задано в виде строки:class MyClass attr_reader :alpha, :beta def
2.2. Обеспечение единственности экземпляра переменной при большом количестве исходных файлов
2.2. Обеспечение единственности экземпляра переменной при большом количестве исходных файлов ПроблемаТребуется, чтобы одна и та же переменная использовалась различными модулями программы, а копия переменной должна быть только одна. Другими словами, это должна быть
Создание пользовательских атрибутов
Создание пользовательских атрибутов Первым шагом процесса построения пользовательского атрибута является создание нового класса, производного от System.Attribute. В продолжение автомобильной темы, используемой в этой книге, мы создадим новую библиотеку классов C# с именем
3.3. Создание сущностей и атрибутов BPwin и их экспорт в ERwin
3.3. Создание сущностей и атрибутов BPwin и их экспорт в ERwin Если в процессе связывания стрелок с объектами модели данных окажется, что каких-либо сущностей или атрибутов не хватает, их можно добавить прямо в BPwin, а затем экспортировать в ERwin.Для редактирования сущностей
Понятия объекта и экземпляра
Понятия объекта и экземпляра Объект — это сложный тип данных, включающий в себя множество переменных — свойств — и набор функций для манипулирования значениями этих переменных — методов. Здесь все достаточно просто: свойства хранят некие данные, а методы их