11.1.14. Классы, содержащие только данные (Struct)
11.1.14. Классы, содержащие только данные (Struct)
Иногда нужно просто сгруппировать взаимосвязанные данные, не определяя никакие специфические методы обработки. Можно для этого создать класс:
class Address
attr_accessor :street, :city, :state
def initialize(street1, city, state)
@street, @city, @state = street, city, state
end
end
books = Address.new("411 Elm St", "Dallas", "TX")
Такое решение годится, но каждый раз прибегать к нему утомительно; к тому же здесь слишком много повторов. Тут-то и приходит на помощь встроенный класс Struct. Если вспомогательные методы типа attr_accessor определяют методы доступа к атрибутам, то Struct определяет целый класс, который может содержать только атрибуты. Такие классы называются структурными шаблонами.
Address = Struct.new("Address", :street, :city, :state)
books = Address.new("411 Elm St", "Dallas", "TX")
Зачем передавать первым параметром конструктора имя создаваемой структуры и присваивать результат константе (в данном случае Address)?
При вызове Struct.new для создания нового структурного шаблона на самом деле создается новый класс внутри самого класса Struct. Этому классу присваивается имя, переданное первым параметром, а остальные параметры становятся именами его атрибутов. При желании к вновь созданному классу можно было бы получить доступ, указав пространство имен Struct:
Struct.new("Address", :street, :city, :state)
books = Struct::Address.new("411 Elm St", "Dallas", "TX")
Создав структурный шаблон, вы вызываете его метод new для создания новых экземпляров данной конкретной структуры. Необязательно присваивать значения всем атрибутам в конструкторе. Опущенные атрибуты получат значение nil. После того как структура создана, к ее атрибутам можно обращаться с помощью обычного синтаксиса или указывая их имена в скобках в качестве индекса, как будто структура - это объект класса Hash. Более подробную информацию о классе Struct можно найти в любом справочном руководстве (например, на сайте ruby.doc.org).
Кстати, не рекомендуем создавать структуру с именем Tms, так как уже есть предопределенный класс Struct::Tms.
Более 800 000 книг и аудиокниг! 📚
Получи 2 месяца Литрес Подписки в подарок и наслаждайся неограниченным чтением
ПОЛУЧИТЬ ПОДАРОКДанный текст является ознакомительным фрагментом.
Читайте также
14.6. Вспомогательные данные
14.6. Вспомогательные данные Вспомогательные данные (ancillary data) можно отправлять и получать, используя элементы msg_control и msg_controllen структуры msghdr с функциями sendmsg и recvmsg. Другой термин, используемый для обозначения вспомогательных данных, — управляющая информация (control information). В
23.5. Неупорядоченные данные
23.5. Неупорядоченные данные В обычном режиме SCTP обеспечивает надежную упорядоченную доставку данных. Кроме того, SCTP предоставляет и сервис надежной неупорядоченной доставки. Сообщение с флагом MSG_UNORDERED отправляется вне очереди и делается доступным для чтения сразу же
10.2.4 Срочные данные
10.2.4 Срочные данные Модель пересылки данных приложением предполагает применение упорядоченного потока байтов, следующего к точке назначения. Снова обратившись к примеру интерактивного сеанса, предположим, что пользователь нажал клавишу attention (внимание) или break
12.12 Данные DNS
12.12 Данные DNS Для сервера DNS требуется, по крайней мере, следующая информация:? Список корневых серверов всего мира, чтобы выяснить, куда посылать внешние запросы. Файл такого списка можно скопировать с сервера регистрации InterNIC.? Список имен и соответствующих им
Собираемые данные
Собираемые данные Особенностью Интернета как инструмента коммуникаций является его опосредованность через массу технических устройств: серверы, маршрутизаторы, файрволы и т. д. Действия пользователей, которые осуществляются через все это оборудование, автоматически
Ресурсы, содержащие информацию общей направленности
Ресурсы, содержащие информацию общей направленности KM.RU (www.km.ru). Информационный мультипортал (зарегистрированный как средство массовой информации), представляющий вниманию своих посетителей разнообразные сервисы, тематические порталы и постоянно обновляемую ленту
Регистрационные данные
Регистрационные данные Если вы нажмете на пункт меню О программе в Проводнике или в других программах, поставляемых с Windows, то увидите, кто обладает правом использования этой копии. Также эти данные можно увидеть в апплете Система Панели управления. Возможно, вам
Типы, характеризуемые значениями и содержащие ссылочные типы
Типы, характеризуемые значениями и содержащие ссылочные типы Теперь, когда вы чувствуете разницу между типами, характеризуемыми значением, и ссылочными типами, давайте рассмотрим более сложный пример. Предположим, что имеется следующий ссылочный тип (класс),
Свойства, доступные только для чтения, и свойства, доступные только для записи
Свойства, доступные только для чтения, и свойства, доступные только для записи При создании типов класса можно создавать свойства, доступные только для чтения. Для этого просто создайте свойство без соответствующего блока set. Точно так же, если вы хотите иметь свойство,
Данные cookie
Данные cookie Последней из рассмотренных здесь технологий управления данными состояния будет использование данных cookie, которые часто имеют вид обычных текстовых файлов (или наборов файлов), сохраняемых на машине пользователя. При регистрации пользователя данного узла
Совет 8. Никогда не создавайте контейнеры, содержащие auto_ptr
Совет 8. Никогда не создавайте контейнеры, содержащие auto_ptr Честно говоря, в книге, посвященной эффективному использованию STL, данный совет не совсем уместен. Контейнеры auto_ptr (СОАР, Containers Of Auto_Ptr) запрещены, а программа, которая попытается их использовать, не будет
Материальные данные
Материальные данные Данные об анализанте и самом тексте являются лишь вспомогательными. Они могут более или менее сильно повлиять на оценку признаков почерка, даваемую экспертами.Например, если почерк оказывается неровным, дрожащим и при этом известно, что автору более
3.3 Программы и данные
3.3 Программы и данные 3.3.1 Функциональные возможности a) Установка (инсталляция)Если установка пакета может быть выполнена пользователем, то при ее проведении должна быть обеспечена возможность успешной установки программ в соответствии с информацией, содержащейся в
4.2.3 Программы и данные
4.2.3 Программы и данные Должно быть протестировано выполнение соответствующих требований раздела 3, а выполнение рекомендаций раздела 3 может быть протестировано.Программы должны быть протестированы во всех вычислительных системах, указанных в описании продукта.При
А.3 Данные
А.3 Данные А.3.1 данные (data): Представление информации в формализованном виде, пригодном для передачи, интерпретации или обработки (ИСО/МЭК 2382-1 [30], без примечаний).А.3.2 носитель данных (data medium): Материал, в котором или на котором данные могут быть записаны и с которого они могут
Отложенные классы как частичные интерпретации: классы поведения
Отложенные классы как частичные интерпретации: классы поведения Не все отложенные классы так близки к АТД как STACK. В промежутке между полностью абстрактным классом, таким как STACK, в котором все существенные компоненты отложены, и эффективным классом, таким как FIXED_STACK,