gpt4 book ai didi

ruby - 一个 block 如何检测到它在另一个 block 内?

转载 作者:数据小太阳 更新时间:2023-10-29 07:51:19 24 4
gpt4 key购买 nike

这是我的代码:

def block
puts "from block"
yield
end

block do
puts "from command line"
block do

end
end

这是输出:

from block
from command line
from block

我想知道第二个 block 如何检测到它在另一个 block 内(使用相同的方法)。

所以输出将是这样的:

from block 1
from command line
from block 2

这可能吗?因为我希望嵌套 block 知道这一点并运行一些额外的代码。

谢谢!

最佳答案

您可以使用实例变量跟踪 block 级别,每当您进入 block 时递增它,并在您离开 block 时递减它:

def block
@block_level ||= 0
@block_level += 1

puts "from block #@block_level"

yield

@block_level -= 1
end

关于ruby - 一个 block 如何检测到它在另一个 block 内?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3358190/

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