Что означает уступить в блоке?

Arrays.fill() . Метод перегружается для различных типов данных, и существует даже изменение, которое заполняет только указанный диапазон индексов.

5
задан uzo 14 September 2009 в 05:14
поделиться

2 ответа

Обычно, если текущему методу был предоставлен кодовый блок (вызывающим, когда он был вызван), 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 внутри блока.

10
ответ дан 18 December 2019 в 10:46
поделиться

Ничего особенного это не значит. Это просто yield, как и любой другой yield.

def test_method
  ["a", "b", "c"].map {|i| yield(i) }
end

p test_method {|i| i.upcase }
# => ["A", "B", "C"]

В фрагменте кода из активной записи цель состоит в том, чтобы yield каждый раз, когда вызывается блок any? .

6
ответ дан 18 December 2019 в 10:46
поделиться
Другие вопросы по тегам:

Похожие вопросы: