文件welcome.rb包含:
welcome_message = "hi there"
但是在IRB中,我无法访问刚创建的变量:
require './welcome.rb' puts welcome_message # => undefined local variable or method `welcome_message' for main:Object
解决方法
虽然您无法访问必需文件中定义的局部变量,但您可以访问常量,您可以访问存储在两个上下文中访问的对象中的任何内容.因此,根据您的目标,有几种方式来分享信息.
最常见的解决方案可能是定义一个模块,并将您的共享值放在那里.由于模块是常量,您将能够在需要的上下文中访问它.
# 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