初学ruby在使用eval时碰到一个问题, 在字符串中定义的变量eval不认得,总是报:
php?name=Ruby" onclick="tagshow(event)" class="t_tag">RubyTest.rb:412: undefined local variable or method `pstr' for main:Object (NameError)
代码如下:
p = proc do |*art|
command = "
pstr = Array.new
art.each do |arg|
if arg.respond_to?(%Q/each_key/)
arg.each_key{|key| pstr<<key.to_s}
else
pstr<<arg.to_s
end
end
puts %Q/#{pstr.join(",")}/
"
eval command
end
def do_proc bc
bc.call(
{"abc" => 100,
"def" => 20},
"bmw"
)
end
do_proc p以上代码预期的结果为: abc,def,bmw
另: 如果把: pstr = Array.new 定义在外面,不会报错但是puts出来的值是空的,也就是说 each那一段代码都没有起作用, pstr的值没有变化。请教一下坛里的朋友知道该如何写才正确。