未定义的局部变量或方法“ arr”

约翰·史密斯

我写了这个迷你测试程序来将数组保存在数组中:

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>'

我怎么了 谢谢

奥雅纳(Arup Rakshit)

如果要访问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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章