8.2.11. Объединение двух хэшей
8.2.11. Объединение двух хэшей
Иногда бывает нужно объединить хэши. Метод merge получает два хэша и формирует из них третий, перезаписывая обнаружившиеся дубликаты:
dict = {"base"=>"foundation", "pedestal"=>"base"}
added = {"base"=>"non-acid", "salt"=>"NaCl"}
new_dict = diet.merge(added)
# {"base" =>"non-acid", "pedestal" =>"base", "salt"=>"NaCl"}
У метода merge есть синоним update.
Если задан блок, то он может содержать алгоритм устранения коллизий. В нижеприведенном примере, если два ключа совпадают, в объединенном хэше остается меньшее значение (по алфавиту, по числовому значению или в каком-то ином смысле):
dict = {"base"=>"foundation", "pedestal"=>"base"}
added = {"base"=>"non-acid", "salt" =>"NaCl"}
new_dict = diet.merge(added) {|key,old,new| old < new ? old : new }
# {"salt"=>"NaCl", "pedestal"=>"base", "base"=>"foundation"}
Таким образом, при использовании блока результат может получиться не такой, как в случае, когда блок не задан. Имеются также методы merge! и update!, которые изменяют вызывающий объект «на месте».
Более 800 000 книг и аудиокниг! 📚
Получи 2 месяца Литрес Подписки в подарок и наслаждайся неограниченным чтением
ПОЛУЧИТЬ ПОДАРОКДанный текст является ознакомительным фрагментом.
Читайте также
Сеть из двух компьютеров
Сеть из двух компьютеров Очень часто случается, что нужно постоянно или разово быстро переписать большой объем информации с одного компьютера на другой, рядом стоящий. При этом использовать какие-то средства переноса данных нежелательно или просто лень. В этом случае
Установка двух ОС
Установка двух ОС Прежде чем устанавливать две операционные системы, вы должны понять, что каждая операционная система занимает ценное дисковое пространство и могут возникнуть проблемы, связанные с совместимостью файловых систем. Каждая операционная система – это
Сравнение двух документов
Сравнение двух документов В более ранних версиях Microsoft Word (например, в Word 97) каждый документ имел три кнопки управления размером окна, которые дублировали кнопки управления размером окна программы и отличались лишь тем, что их действие распространялось на текущий
8.2.13. Вычисление разности и пересечения хэшей
8.2.13. Вычисление разности и пересечения хэшей Ключи хэша можно скопировать в отдельный массив, а к получившимся из разных хэшей массивам применить методы & и - класса Array. Результатом являются пересечение и разность множеств ключей. Соответствующие им значения можно
4.4.7. Взаимоблокировки двух и более потоков
4.4.7. Взаимоблокировки двух и более потоков Взаимоблокировка происходит, когда два (или более) потока блокируются в ожидании события, наступление которого на самом деле зависит от действий одного из заблокированных потоков. Например, если поток A ожидает изменения
15.1. Игры двух лиц с полной информацией
15.1. Игры двух лиц с полной информацией Игры, которые мы собираемся обсуждать в данной главе, относятся к классу так называемых игр двух лиц с полной информацией. Примерами таких игр могут служить шахматы, шашки и т.п. В игре участвуют два игрока, которые ходят по очереди,
11.1.16. Объединение двух отсортированных файлов
11.1.16. Объединение двух отсортированных файлов Прежде чем объединять два файла, их необходимо отсортировать, иначе результат будет неотсортированным. Предположим, нам прислали файл video2.txt, содержащий дополнения к уже имеющемуся перечню фильмов, причем этот файл
11.3.1. Объединение двух файлов
11.3.1. Объединение двух файлов Предположим, имеется два текстовых файла: один называется names.txt и содержит имена пользователей с указанием улиц, на которых они проживают, а другой называется town.txt и содержит имена пользователей с указанием городов, в которых они живут.$ cat
ОГОРОД КОЗЛОВСКОГО: Три в двух
ОГОРОД КОЗЛОВСКОГО: Три в двух Три в двух - это не странный монстрик, сочетающий в двух корпусах три функции (как, знаете, бывает «три в одном», вроде МФУ), а три разных устройства - в двух «Огородах». На самом-то деле, по замыслу, - это типичное «три в одном», но двух журнальных
ОГОРОД КОЗЛОВСКОГО: Три в двух
ОГОРОД КОЗЛОВСКОГО: Три в двух Итак: что же, кроме лентопротяжки, остается от профессионализма GV-D1000E? Способность работать со специальными видеокассетами, снабженными крохотными микросхемами памяти, куда можно уместить пару титров, идентификационную информацию да