8.2.3. Доступ к парам ключ-значение и добавление новых пар
8.2.3. Доступ к парам ключ-значение и добавление новых пар
В классе Hash есть методы класса [] и []=. Используются они почти так же, как одноименные методы в классе Array, но принимают лишь один параметр. В качестве параметра может выступать любой объект, а не только строка (хотя строки используются чаще всего).
а = {}
а["flat"] = 3 # {"flat"=>3}
а.[]=("curved",2) # {"flat"=>3,"curved"=>2}
a.store("angled",5) # {"flat"=>3,"curved"=>2,"angled"=>5}
Метод store — просто синоним []=, оба могут принимать два аргумента, как показано в примере выше.
Метод fetch аналогичен методу [], но возбуждает исключение IndexError, когда ключ отсутствует. Есть у него и необязательный второй аргумент (или блок) для указания значения по умолчанию (см. раздел 8.2.2).
a["flat"] # 3
а.[]("flat") # 3
a.fetch("flat") # 3
a["bent"] # nil
Предположим, что мы не уверены, существует ли объект Hash, но хотели бы избежать очистки имеющегося хэша. Очевидное решение — проверить, определен ли интересующий нас объект:
unless defined? а
а={}
end
a["flat"] = 3
Но есть и другой способ:
а ||= {}
a["flat"] = 3
# Или даже так:
(а ||= {})["flat"] = 3
Тот же вопрос можно поставить для отдельных ключей, когда новое значение следует присваивать, лишь если такого ключа еще нет:
a=Hash.new(99)
а[2] # 99
а # {}
а[2] ||= 5 # 99
а # {}
b=Hash.new
b # {}
b[2] # nil
b[2] ||= 5 # 5
b # {2=>5}
Отметим, что nil может выступать и в качестве ключа, и в качестве значения:
b={}
b[2] # nil b[3]=nil
b # {3=>nil}
b[2].nil? # true
b[3].nil? # true b[nil]=5
b # {3=>nil,nil=>5}
b[nil] # 5
b[b[3]] # 5
Более 800 000 книг и аудиокниг! 📚
Получи 2 месяца Литрес Подписки в подарок и наслаждайся неограниченным чтением
ПОЛУЧИТЬ ПОДАРОКДанный текст является ознакомительным фрагментом.
Читайте также
Номер - это ключ.
Номер - это ключ. После того как файл открыт для доступа VBA, обращение к нему осуществляется по номеру, а не по имени. Если приходится работать с несколькими файлами одновременно, отслеживать то, какой файл вам необходим в данный момент, совсем не просто. В принципе, никто не
Добавление новых элементов в панель элементов управления
Добавление новых элементов в панель элементов управления Чтобы получить возможность использовать элемент управления ActiveX, выполните следующее.1. Установите программное обеспечение элемента управления на жесткий диск.Мне кажется, это имеет смысл.2. Зарегистрируйте
3.14.2. Сопоставление с парой «ключ-значение»
3.14.2. Сопоставление с парой «ключ-значение» Иногда приходится работать со строками вида «ключ=значение» (например, при разборе конфигурационного файла приложения).Следующий код извлекает ключ и значение. Предполагается, что ключ состоит из одного слова, значение
8.2.4. Удаление пар ключ-значение
8.2.4. Удаление пар ключ-значение Удалить пары ключ-значение из хэша можно с помощью методов clear, delete, delete_if, reject, reject! и shift.Метод clear удаляет из хэша все пары. Эффект такой же, как от присваивания переменной нового пустого хэша, но работает чуть быстрее.Метод shift удаляет
8.2.9. Выборка пар ключ-значение по заданному критерию
8.2.9. Выборка пар ключ-значение по заданному критерию К классу Hash подмешан модуль Enumerable, поэтому можно обращаться к методам detect (find), select (find_all), grep, min, max и reject (как и для массивов).Метод detect (синоним find) находит одну пару ключ-значение. Он принимает блок (которому передается по
8.4. Автоматическое добавление новых экземпляров класса в контейнер
8.4. Автоматическое добавление новых экземпляров класса в контейнер ПроблемаТребуется хранить все экземпляры класса в едином контейнере, не требуя от пользователей класса выполнения каких-либо специальных операций.РешениеВключите в класс статический член, являющийся
Эффект Ключ цветности
Эффект Ключ цветности Эффект Ключ цветности является вторым по частоте использования видеоэффектом для наложенного видео. Правда, он выглядит довольно неплохо и при использовании на основной видеодорожке. Мы же рассмотрим применение эффекта именно для дорожки
5.2.3. Добавление элемента к списку, если он в нем отсутствует (добавление без дублирования)
5.2.3. Добавление элемента к списку, если он в нем отсутствует (добавление без дублирования) Часто требуется добавлять элемент X в список L только в том случае, когда в списке еще нет такого элемента. Если же X уже есть в L, тогда L необходимо оставить без изменения, поскольку
Значение SAP R/3
Значение SAP R/3 В оставшейся части этой главы я опишу выдающиеся свойства и преимущества системы SAP R/3 как ERP-системы. Хотя это и не было предметом обсуждения в главе 2 «Оценка ERP» и главе 3 «Выбор ERP», после тщательной оценки и выбора ERP-системы станет ясно, что по всем критериям
2.5.6. Ключ продукта
2.5.6. Ключ продукта А теперь самое интересное: нужно ввести ключ продукта (рис. 2.15). Заметьте: ключ вводится уже после установки системы. Поэтому если вы выбрали выпуск Windows, не соответствующий имеющемуся ключу, установить Windows не получится. А для смены выпуска нужно
Электронный ключ защиты
Электронный ключ защиты Электронный ключ — это механическое устройство, которое используется производителями программ с целью не допущения несанкционированного распространения программного продукта. Программа функционирует правильно только в том случае, если во
Доверие: ключ к обману
Доверие: ключ к обману Чем естественней социальный инженер общается с жертвой, тем больше он ослабляет подозрение. Когда у людей нет причины для подозрений, социальному инженеру становится легко приобрести доверие жертвы.Как только он получает ваше доверие, разводной
«Высокий ключ»
«Высокий ключ» High key, или «высокий ключ», – это фотография в светлой тональности, выполненная в светло-белесых тонах, когда контуры и очертания объектов будто растворяются в светлом сиянии – ярком белом свете. У зрителя создается впечатление, что все в кадре заполняет
«Низкий ключ»
«Низкий ключ» Low key – «низкий ключ» – техника съемки, которая используется для получения фотографии с преобладанием темных тонов (рис. 10.4). На снимке будут иметь место абсолютно черные участки, а также резкие тени. Вам нужно добиться, чтобы фон получился совершенно черным,