虽然这是事实,你不能访问所需的文件中定义的局部变量,你可以访问常量,您可以访问存储在你必须在两种情况下访问对象什么。因此,根据您的目标,有几种分享信息的方式。
最常见的解决方案可能是定义一个模块并将共享值放在那里。由于模块是常量,因此您可以在需要的上下文中访问它。
# in welcome.rb
module Messages
WELCOME = "hi there"
end
# in irb
puts Messages::WELCOME # prints out "hi there"
你也可以把这个值放到一个类里面,效果差不多。或者,您可以将其定义为文件中的常量。由于默认上下文是Object类的一个对象,称为main,您还可以在main上定义一个方法,实例变量或类变量。所有这些方法最终都会以不同的方式制造“全局变量”,或多或少,并且可能不适用于大多数目的。另一方面,对于具有非常明确的范围的小型项目,它们可能没有问题。
# in welcome.rb
WELCOME = "hi constant"
@welcome = "hi instance var"
@@welcome = "hi class var"
def welcome
"hi method"
end
# in irb
# These all print out what you would expect.
puts WELCOME
puts @welcome
puts @@welcome
puts welcome
不错,作为一个评论:约翰海兰的代码中的'WELCOME'可以被访问,因为它由* upcase *字母开头,这使它成为一个常量。 Ruby是有趣的。 – 2012-10-20 17:38:21