属于类对象的“@”实例变量和Ruby中的“@@”类变量之间的区别?
发布时间:2020-12-17 03:17:19 所属栏目:百科 来源:网络整理
导读:参见英文答案 Ruby class instance variable vs. class variable????????????????????????????????????5个 根据 wikibooks …… @one下面是属于类对象的实例变量(注意这与类变量不同,不能称为@@ one) @@ value是一个类变量(类似于Java或C中的static). @two是
参见英文答案 >
Ruby class instance variable vs. class variable????????????????????????????????????5个
根据 wikibooks …… > @one下面是属于类对象的实例变量(注意这与类变量不同,不能称为@@ one) 我的问题: @one和@@值之间有什么区别? class MyClass @one = 1 @@value = 1 def initialize() @two = 2 end end 解决方法
@one是MyClass类的实例变量,@@ value是类变量MyClass.由于@one是一个实例变量,它只由MyClass类拥有(在Ruby类中也是对象),不可共享,但@@ 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 @two是MyClass类的实例的实例变量. 实例变量是对象的私有属性,因此它们不会共享它.在Ruby中,类也是对象. @one你在MyClass类中定义,因此它只由定义它的类所拥有.另一方面,当您使用MyClass.new创建MyClass类的对象时,将创建@two实例变量. @two只归ob所有,其他任何对象都不知道它. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- emacs – 我怎么可以diff一个单一的文件与magit?
- [Swift通天遁地]九、拔剑吧-(5)创建Tab图标具有多种样式的T
- c# – Repeater DataBound事件中的匿名类型
- Swift下调用Touch ID实现指纹识别
- c# – 当Word保存时,为什么我的自定义XML不会转移到新版本的
- c# – Moq验证使用在Return中修改的对象,而不是实际传入的对
- c – Q3ListView无法从Qt后备存储中取消注册或代码错误吗?
- ruby-on-rails – 什么是rails约定’username’或’user_na
- Swift vs Objective-C – 用于重用C代码
- 批量将xml文件转json并写入文件