gpt4 book ai didi

ruby - 从关联 block 中递归调用 Ruby 方法。还有别的办法吗?

转载 作者:数据小太阳 更新时间:2023-10-29 06:46:54 25 4
gpt4 key购买 nike

我想出了这个:

def f x, &b
yield x, b
end
f 4 do |i, b|
p i
f i - 1, &b if i > 0
end

结果:

4
3
2
1
0

还有别的办法吗?

最佳答案

这取决于您的实际代码的细节,但根据您的示例,如果您预先命名 block ,则可以避免在函数中产生值和 block 。例如:

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 组合器的一个很好的应用。一旦我有更好的东西给你,我会更新这条消息。

关于ruby - 从关联 block 中递归调用 Ruby 方法。还有别的办法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1786836/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com