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

8.2.13. Вычисление разности и пересечения хэшей

8.2.13. Вычисление разности и пересечения хэшей

Ключи хэша можно скопировать в отдельный массив, а к получившимся из разных хэшей массивам применить методы & и - класса Array. Результатом являются пересечение и разность множеств ключей. Соответствующие им значения можно получить с помощью метода each, примененного к хэшу, содержащему все образованные таким способом ключи.

а = {"а"=>1,"b"=>2,"z"=>3}
b = {"x"=>99,"у"=>88,"z"=>77}
intersection = a.keys & b.keys
difference = a.keys - b.keys
с = a.dup.update(b)
inter = {}
intersection.each {|k| inter[k]=c[k] }
# inter равно {"z"=>77}
diff={}
difference.each {|k| diff[k]=c[k] }
# diff равно {"а"=>1, "b"=>2}

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


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