区别于@&引用;属于类对象的实例变量和@@&引用;Ruby中的类变量?
根据区别于@&引用;属于类对象的实例变量和@@&引用;Ruby中的类变量?,ruby,Ruby,根据 下面的@one是属于类对象的实例变量(注意这与类变量不同,不能称为@@one) @@value是一个类变量(类似于Java或C++中的static) @two是属于MyClass实例的实例变量 我的问题: @one和@value之间有什么区别? 还有,使用@one有什么理由吗 class MyClass @one = 1 @@value = 1 def initialize() @two = 2 end end @one是类MyClass的实例变量,@@va
- 下面的
是属于类对象的实例变量(注意这与类变量不同,不能称为@one
)@@one
是一个类变量(类似于Java或C++中的static)李>@@value
是属于MyClass实例的实例变量李>@two
还有,使用@one有什么理由吗
class MyClass
@one = 1
@@value = 1
def initialize()
@two = 2
end
end
@one
是类MyClass
的实例变量,@@value
是类变量MyClass
。由于@one
是一个实例变量,它只属于类MyClass
(在Ruby类中也是object)所有,不可共享,但@@value
是一个共享变量
共享变量
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
A类
@@var=12
结束
B类12
非共享变量
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
A类
@var=12
结束
B类零
@two
是类MyClass
实例的实例变量
实例变量是对象的私有属性,因此它们不会共享它。在Ruby中,类也是对象
@one
您在类MyClass
中定义,因此它只属于定义它的类。另一方面,当您使用MyClass.new
创建类MyClass
的对象时,例如ob
,将创建两个实例变量@two
仅属于ob
,其他对象对此一无所知。我认为应该由谁来持有信息或能够执行任务(因为类方法和实例方法是一样的)
班级人员
@@人=[]
def初始化(名称)
@name=name
@@人们,@one
与@two
有何不同?我知道@two属于MyClass的实例,但我不明白一个实例变量怎么可能只属于class对象而不属于一个类的实例。@ayjay现在清楚了吗?是的。谢谢你的解释@ayjay很高兴帮助你……)