[Ruby] 实例属性可以脱离实例吗?

如题,我的rb文件里没有定义类,也没有实例,但可以定义实例属性,如:

@t = 9
puts @t

 

这个@t是哪个实例的属性?实例属性可以脱离实例吗?谢谢

 

Ruby里即便是顶层代码也是在某个对象内部的,这个对象叫做“main”。
[code="ruby"]class Foo
def initialize
@a = 1
end
end

puts Foo.new.instance_variables #=> ["@a"][/code]
这样可以看到Foo类的实例里有@a成员变量。那么对顶层代码也做类似的查询:
[code="ruby"]puts self.instance_variables #=> []
@b = 2
puts self.instance_variables #=> ["@b"]
puts self.class #=> Object[/code]

我觉的应该属全局,动态语言的通性, 可不可以脱离, 个人觉得应看执行环境。

是属于顶层对象object main
这个运行环境应该脱离不了的。
[url]http://www.iteye.com/topic/370726[/url]

关于这个抽象的object main,有人给出下面的描述:
关于main Object 实现的猜测:

[code="ruby"]class Object

Object.new.instance_eval do

def self.to_s

"main"

end

private

##

# Your program gets inserted here...

##

end

end [/code]

PS:最近看了点js,感觉这个object main和js的window对象一样...