Arrays.fill()
. Метод перегружается для различных типов данных, и существует даже изменение, которое заполняет только указанный диапазон индексов.
Обычно, если текущему методу был предоставлен кодовый блок (вызывающим, когда он был вызван), yield
выполняет кодовый блок, передавая указанные параметры .
[1,2,3,4,5].each { |x| puts x }
Теперь {| x | помещает x}
- это блок кода ( x
- параметр), передаваемый каждому методу Array
. Реализация Array # each
будет перебирать себя и вызывать ваш блок несколько раз с помощью x = each_element
pseudocode
def each
#iterate over yourself
yield( current_element )
end
Следовательно, это приводит к
1
2
3
4
5
* block_args
- это путь Ruby принять неизвестное количество параметров в виде массива. Вызывающий может передавать блоки с разным количеством аргументов.
Наконец, давайте посмотрим, что делает yield внутри блока.
Ничего особенного это не значит. Это просто yield, как и любой другой yield.
def test_method
["a", "b", "c"].map {|i| yield(i) }
end
p test_method {|i| i.upcase }
# => ["A", "B", "C"]
В фрагменте кода из активной записи цель состоит в том, чтобы yield каждый раз, когда вызывается блок any?
.