ruby require不加载变量 - 未定义的局部变量

时间:2013-03-10 16:22:51

标签: ruby

拥有包含

的外部文件wordlist.rb
code_words = { 'a' => 'is a', 'b' => 'is b' }

此文件存储在包含我的代码的同一目录中 要求'wordlist'

code_word.each do | mykey, mysentence | puts mykey + "=> " mysentence end

当我运行此代码时,我收到以下消息

<main>': undefined local variable or method code_words' for main:Object (NameError)

感谢您的帮助

2 个答案:

答案 0 :(得分:2)

您应该有一个全局变量(即以$开头),以便能够从您需要的文件中访问它。

答案 1 :(得分:2)

是的,它是一个局部变量。局部变量是它们定义的范围的局部变量。这就是它们被称为 local 变量的原因。您无法访问另一个范围的局部变量,这是局部变量的全部要点。

如果您希望变量在全局范围内,则需要使用全局变量。

然而,在这种情况下,看起来你真的想要一个全局常量,而不是变量:

CODE_WORDS = { 'a' => 'is a', 'b' => 'is b' }

puts CODE_WORDS.map {|mykey, mysentence| "#{mykey} => #{mysentence}" }.join("\n")