Anu*_*rag 10 ruby instance-variables
创建实例变量意味着什么,例如@foo
在任何类定义之外的文件中.假设有一个文件test.rb,下面给出了该文件的全部内容.
# test.rb
@foo = "bar"
puts @foo
Run Code Online (Sandbox Code Playgroud)
它打印"bar"
,但这是某种包装类中的实例变量吗?
使用两个文件进行测试表明存在一个main
包含所有内容的对象.这种理解是否正确?
a.rb的内容
@me = self
@a = "from-a"
Run Code Online (Sandbox Code Playgroud)
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]
Run Code Online (Sandbox Code Playgroud)
Mik*_*wis 15
一切都是红宝石中的一个对象.所以你现在实际上是在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
Run Code Online (Sandbox Code Playgroud)