Вызов метода Ruby рекурсивно из его связанного блока. Какой-либо другой путь?

IMac является очень быстрой машиной и более, чем подойдет для разработки iPhone. В большинстве случаев Mac, Мини-с истраченным поршнем, достаточно хорош.

Имеют в виду, что из поля, Мини-Mac может только разместить один монитор.

10
задан DigitalRoss 24 November 2009 в 00:20
поделиться

2 ответа

Это зависит от особенностей вашего фактического кода, но, учитывая ваш пример, если вы заранее назовете блок, вы можете избежать выдачи значения и блока в вашей функции. Например:

def f(x, &b)
  yield x
end

foo = lambda do |i|
  p i
  f(i-1,&foo) if i > 0
end
f(4,&foo)

Однако я бы хотел найти более элегантное решение этой проблемы. Я подозреваю, что это было бы хорошим применением комбинатора Y. Я обновлю это сообщение, как только у меня будет что-то получше.

4
ответ дан 4 December 2019 в 02:50
поделиться
def f(x, &b)
  b.call x
  f(x-1,&b) if x>0
end

f(4) do |x|
 p x
end
1
ответ дан 4 December 2019 в 02:50
поделиться
Другие вопросы по тегам:

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