【发布时间】:2013-09-04 05:13:41
【问题描述】:
给定以下两段代码:
def hello(z)
"hello".gsub(/(o)/, &z)
end
z = proc {|m| p $1}
hello(z)
# prints: nil
def hello
z = proc {|m| p $1}
"hello".gsub(/(o)/, &z)
end
hello
# prints: "o"
为什么这两段代码的输出不同?有没有办法从方法定义外部将块传递给gsub,以便变量$1、$2 的评估方式与在方法定义内部给出块的方式相同?
【问题讨论】:
标签: ruby scope pseudo-globals