根据维基教科书 http://en.wikibooks.org/wiki/Ruby_Programming/Syntax/Classes#Instance_Variables...
-
@one
below 是一个实例变量属于类对象(请注意,这与类变量不同,不能称为@@one
)
-
@@value
is 一个类变量(类似于 Java 或 C++ 中的 static)。
-
@two
是一个实例变量属于实例我的班级.
我的问题:
@one 和 @@value 有什么区别?
另外,有理由使用@one吗?
class MyClass
@one = 1
@@value = 1
def initialize()
@two = 2
end
end
@one
是类的实例变量MyClass
and @@value
是类变量MyClass
. As @one
是一个实例变量,仅由该类拥有MyClass
(在 Ruby 中,类也是对象), not 可分享的, but @@value
is a 共享变量.
共享变量
class A
@@var = 12
end
class B < A
def self.meth
@@var
end
end
B.meth # => 12
非共享变量
class A
@var = 12
end
class B < A
def self.meth
@var
end
end
B.meth # => nil
@two
是类实例的实例变量MyClass
.
实例变量是对象的私有属性,因此它们不会共享它。在 Ruby 中,类也是对象。@one
你在类中定义MyClass
,因此它仅由定义它的类拥有。另一方面@two
当您创建类的对象时,将创建实例变量MyClass
, say ob
, using MyClass.new
. @two
只属于ob
,没有其他对象对此有任何想法。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)