Ruby在类之外创建实例变量

| 在任何类定义之外的文件中创建实例变量(例如“ 0”)是什么意思。假设有一个文件test.rb,文件的全部内容如下。
# test.rb
@foo = \"bar\"
puts @foo
它显示
\"bar\"
,但这是某种包装类中的实例变量吗? 使用两个文件进行测试表明,存在一个
main
对象,所有内容都包裹在其中。这种理解正确吗? a.rb的内容
@me = self
@a = \"from-a\"
b.rb的内容
require \"./a\"

@b = \"from-b\"
puts @me == self # true (self refers to the same object)
puts self.class  # Object
puts self.instance_variables # [@a, @b, @me]
    
已邀请:
一切都是红宝石中的物体。因此,您实际上现在在
main
对象中,它是
Object
的实例。 在文件中,如果您输入
puts self.class
,则会看到您正在
main
下操作,并且类别为
Object
。 甚至在irb中,例如:
ruby-1.9.2-p136 :001 > self
 => main 
ruby-1.9.2-p136 :002 > self.class
 => Object 
    

要回复问题请先登录注册