访问类'来自外部的实例变量
我理解(我认为)Ruby 中类的类变量和实例变量之间的区别。
我想知道如何从该类的外部访问该类的实例变量。
从内部(即在类方法而不是实例方法中)可以直接访问它,但是从外部,有没有办法做到 MyClass.class.[@$#]variablename
?
我没有任何具体的理由这样做,只是学习 Ruby 并想知道这是否可能。
I understand (I think) the difference between class variables and instance variables of a class in Ruby.
I'm wondering how one can access the instance variables of a class from OUTSIDE that class.
From within (that is, in a class method instead of an instance method), it can be accessed directly, but from outside, is there a way to do MyClass.class.[@$#]variablename
?
I don't have any specific reason for doing this, just learning Ruby and wondering if it is possible.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
在 ruby 中,您可以通过两种方式
来实现此目的让我为您详细说明上述方法,
手动定义 getter 和 setter
使用 attr_* 方法
attr_accessor 在内部为您创建 setter 和 getter 方法,如果您只需要 setter,则可以使用 attr_writer,如果您只需要 getter,则可以使用 attr_reader。
我希望我回答了你的问题
In ruby you can achieve this in 2 ways
Let me elaborate the above ways for you,
Manually defining getter and setters
using attr_* methods
attr_accessor internally creates setter and getter methods for you, if you want only setter you can just use attr_writer and if you want only getter you can use attr_reader.
I hope, I answered your question
Ruby 有类、类对象和实例。
变量:
类实例变量:
在类实例变量 b 的实例上定义 getter 和 setter:
现在可以通过所有者类及其实例来访问类实例变量 b。
作为一个几天前的 Ruby 学习者,这是我能做的最多的事情。
是的,我开始不喜欢 ruby...iso 是一个更好的解决方案。
Ruby has Class, Class Object, and Instance.
Class variable:
Class instance variable:
Defining a getter and setter on the instances for the class instance variable b in:
Now the class instance variable b can be accessed via the owner Class and its instances.
As a several days old ruby learner, this is the most I can do.
Yes, I'm begining to dislike ruby...iso a better solution.
前述结果:
我相信 Arkku 演示了如何从类外部访问类变量 (@@),而不是类实例 变量 (@)。
我从这篇文章中得出了上述内容:清楚地看到元类
The foregoing yields:
I believe that Arkku demonstrated how to access class variables (@@), not class instance variables (@) from outside the class.
I drew the foregoing from this essay: Seeing Metaclasses Clearly