我写了这个迷你测试程序来将数组保存在数组中:
arr = Array.new
def w(num,text)
arr << [num, text]
end
w(0123, "was")
w(3453, "hallo")
w(0123, "umbau")
w(0342, "farruko")
arr.each do |f|
puts f.first.to_s + f.last
end
但是以某种方式我得到了错误:
arraytest.rb:5:in `w': undefined local variable or method `arr' for main:Object
(NameError)
from arraytest.rb:8:in `<main>'
我怎么了 谢谢
如果要访问arr
方法内部的顶级局部变量,请按如下所示编写代码#w
。
arr = Array.new
define_method(:w) do |num,text|
arr << [num, text]
end
w(0123, "was")
w(3453, "hallo")
w(0123, "umbau")
w(0342, "farruko")
arr.each do |f|
puts f.first.to_s + f.last
end
# >> 83was
# >> 3453hallo
# >> 83umbau
# >> 226farruko
def
创建一个新的作用域,因此arr
您在方法内部看到的局部变量w
仅作用于该方法。顶级局部变量arr
与方法内部的局部变量不同w
。现在,如果您要使用外部局部变量arr
,请使用Module#define_method
支持block的。在Ruby中,块是封闭的,因此您将可以访问周围的环境。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句