我有拉姆达的我想在同一时间运行所有的兰巴年代,该阵列可以有任意数量兰巴的,这使得它很难的数组。既然你只能枚举一个数组。红宝石重试阵#每个循环
def detect_int(*args)
return 1 if args.empty?
n = 1
args.each do |lam|
until lam.call(n) do
n += 1
end
retry if lam.call(n) == false
end
n
end
这种方法在理论上应该工作,它应该增加计数,直到lam1.call(N)返回true。那么它将移动到下一个lam,如果lam2.call(n)返回false,它应该再次从lam1开始重试args.each循环,并增加n。等等。
只有我得到一个SyntaxError: (irb):76: Invalid retry
你怎么会重试每个循环,使其从一开始就
我读了关于ruby loops and the retry method here.矿似乎符合正确的语法启动它,而是因为它的内循环一个循环可能会让人困惑。目前它坐在args循环中,这是我想要重置的循环。
我很困惑你在这里试图做什么。除非每次调用它时,对于相同的输入都有一个lambda返回不同的值,否则lam.call(n)== false'总是返回false,因为您刚完成检查(在'until'条件中)那lam.call(n)'在那之前就是真的吗? – Ajedi32
对不起,这是一个永远不会被击中的问题的重要组成部分,因为直到它找到一个解决方案,直到块将迭代,从而使重试无用。我需要参数迭代重新开始,这是一个非常痛苦的过程。这样做是太meta。 – TheLegend