问题标签 [eigenclass]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
ruby - 当 eigenclass 看起来如此相似时,为什么它不等同于 self.class?
我在某处错过了备忘录,我希望你能向我解释一下。
为什么对象的特征类与 不同self.class
?
我将特征类等同于的逻辑序列class.self
相当简单:
class << self
是一种声明类方法的方式,而不是实例方法。这是一个捷径def Foo.bar
。
所以在对类对象的引用中,返回self
应该与self.class
. 这是因为class << self
将设置self
为Foo.class
类方法/属性的定义。
我只是困惑吗?或者,这是 Ruby 元编程的一个偷偷摸摸的把戏?
ruby-on-rails - Ruby中'self.method_name'和'class << self'之间的区别
我试图将一个类的实例化限制为一个(不使用单例),但我做不到。我尝试使用类变量(@@)但没有运气。我用谷歌搜索并发现了这个:
我搜索了'class << self ' 解释,希望能找到一个更好的(或者只是一个更简单和干净的)但再次,没有运气。最后,经过一些测试,我得出结论,“class << self ”只是一个块包装器,您可以在其中定义类方法。那么,这是正确的吗?
问候!
ruby - class << Ruby 中的自成语
class << self
在Ruby中做什么?
ruby - Ruby类问题
我有一个快速的 Ruby 问题。我来自 Java/c 背景,所以当在实例方法中引用时,我理解 Ruby 中的“self”就像“this”。还有“自己”。方法的前缀将其定义为类方法。
但这意味着什么?
ruby - Ruby 类方法与特征类中的方法
类方法和该类的特征类(或元类)中的方法是否只是定义一件事的两种方法?
否则,有什么区别?
以任何方式做X.a
和X.b
表现不同?
我认识到我可以通过打开 eigenclass 来覆盖或别名类方法:
ruby - 动态地将模块中的方法添加到类的特定实例
这是交易:我需要使用一些方法扩展 Box 类的特定实例。我需要包含在模块中的方法,并且我希望 Box 实例能够动态地包含模块。现在我正在使用带有 eval 的钩子:
它工作得很好,但是当我使用eval时我真的觉得很脏。我正在寻找类似的东西:
但我无法让 eigenclass 运行class_eval而无需像以下那样对类进行猴子补丁:
有没有一种漂亮(可靠)的方法可以让我做到这一点?
ruby - Ruby 中的匿名类
我有两个问题:
- 方法是否
f_1
属于元类匿名类? - 方法是否
f_2
属于匿名类?
与以下代码相关:
ruby-on-rails - 为什么学习 Ruby 中的元编程和特征类很重要?
我目前正在尝试使用 Ruby 和 Rails,并且我已经阅读了有关元编程的教程和书籍中的一些部分。许多人提到它是 Ruby 的重要组成部分,但他们并没有真正深入细节。就好像元编程是 Ruby 程序员的最后一道防线。来自 .NET 背景,我很难理解为什么它如此有用。
- 使用元编程有什么好处?
- 什么是特征类,它与单例有何不同?
- 在什么情况下使用元编程很常见?
- 使用代码来修改其他代码的行为,尤其是不属于您自己的代码,有哪些道德含义?
ruby - 是否有可能在 Ruby 中获得所有的特征类?
在 Ruby 中获取所有模块的列表很容易:
但是,是否可以获得所有特征类(也称为单例类或元类)的列表?或者特征类是不可见的?
我试过了
我正在尝试获取特征类,因为我想列出脚本中定义的所有方法。我可以查找由模块和类定义的所有实例方法,然后查找模块和类(或所有对象,如果我想占用 CPU)的单例方法,但这似乎有点笨拙。