gpt4 book ai didi

ruby - 如何找到传递给 block 的参数变量的名称

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

我正在尝试进行一些元编程,并且想知道作为 block 参数传递的变量的名称:

z = 1 # this variable is still local to the block   

Proc.new { |x, y| local_variables }.call

# => ['_', 'z', x', 'y']

我不太确定如何区分块外定义的变量和此列表中的 block 参数。有没有其他方式可以反射(reflect)这一点?

最佳答案

在 Ruby 1.8 中,您可以通过以下方式判断:

>> z = 1
=> 1
>> Proc.new{|x| "z is #{defined? z}, x is #{defined? x}"}.call(1)
=> "z is local-variable, x is local-variable(in-block)"

但是,注意!这在 Ruby 1.9 中不起作用 - 你会得到

=> "z is local-variable, x is local-variable"

然后我不知道答案。

关于ruby - 如何找到传递给 block 的参数变量的名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1635271/

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