如题,我的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对象一样...