Это миксин.
Имеет следующие неочевидные методы:
.chunk - возвращает ассоциативный массив, в котором находится ключ и массив элементов для которых характерен этот ключ:
Есть два специальных ключа, которые может вернуть блок ожидаемый чанком:
Имеет следующие неочевидные методы:
.chunk - возвращает ассоциативный массив, в котором находится ключ и массив элементов для которых характерен этот ключ:
[3,1,4,1,5,9,2,6,5,3,5].chunk {|n|
n.even?
}.each {|even, ary|
p [even, ary]
}
#=> [false, [3, 1]]
# [true, [4]]
# [false, [1, 5, 9]]
# [true, [2, 6]]
# [false, [5, 3, 5]]
Поскольку первый два числа массива 3,1 в чанке вернули тру, они попали в результующий массив под один ключ тру, потом только 4 попала под фолс и т.д.
А вот у нас есть файл со словарем, в котором находятся в алфавитном порядке определенные слова.
open("/usr/share/dict/words", "r:iso-8859-1") {|f|
f.chunk {|line| line.ord }.each {|ch, lines| p [ch.chr, lines.length] }
}
#=> ["\n", 1]
# ["A", 1327]
# ["B", 1372]
# ["C", 1507]
# ["D", 791]
# ...
Так в результующем массиве под ключем кода буквы находится массив слов, которые начинаются на эту букву.
Есть два специальных ключа, которые может вернуть блок ожидаемый чанком:
-
nil and :_separator specifies that the elements are dropped.
- :_alone specifies that the element should be chunked as a singleton.
Комментариев нет:
Отправить комментарий