问题标签 [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.

0 投票
3 回答
16151 浏览

ruby - 当 eigenclass 看起来如此相似时,为什么它不等同于 self.class?

我在某处错过了备忘录,我希望你能向我解释一下。

为什么对象的特征类与 不同self.class

我将特征类等同于的逻辑序列class.self相当简单:

class << self是一种声明类方法的方式,而不是实例方法。这是一个捷径def Foo.bar

所以在对类对象的引用中,返回self应该与self.class. 这是因为class << self将设置selfFoo.class类方法/属性的定义。

我只是困惑吗?或者,这是 Ruby 元编程的一个偷偷摸摸的把戏?

0 投票
4 回答
3006 浏览

ruby-on-rails - Ruby中'self.method_name'和'class << self'之间的区别

我试图将一个类的实例化限制为一个(不使用单例),但我做不到。我尝试使用类变量(@@)但没有运气。我用谷歌搜索并发现了这个:

我搜索了'class << self ' 解释,希望能找到一个更好的(或者只是一个更简单和干净的)但再次,没有运气。最后,经过一些测试,我得出结论,“class << self ”只是一个块包装器,您可以在其中定义方法。那么,这是正确的吗?

问候!

0 投票
6 回答
173920 浏览

ruby - class << Ruby 中的自成语

class << selfRuby中做什么?

0 投票
4 回答
293 浏览

ruby - Ruby类问题

可能重复:
Ruby 中的 class << self idiom

我有一个快速的 Ruby 问题。我来自 Java/c 背景,所以当在实例方法中引用时,我理解 Ruby 中的“self”就像“this”。还有“自己”。方法的前缀将其定义为类方法。

但这意味着什么?

0 投票
4 回答
4289 浏览

ruby - Ruby 类方法与特征类中的方法

类方法和该类的特征类(或元类)中的方法是否只是定义一件事的两种方法?

否则,有什么区别?

以任何方式做X.aX.b表现不同?

我认识到我可以通过打开 eigenclass 来覆盖或别名类方法:

0 投票
1 回答
933 浏览

ruby - Ruby eigenclass 模式 - 要求澄清

哪些信息源描述了最好的 Ruby 特征类?

我已阅读以下内容:

尽管如此,我还是无法推断出以下行为:

输出

code>

0 投票
2 回答
880 浏览

ruby - 动态地将模块中的方法添加到类的特定实例

这是交易:我需要使用一些方法扩展 Box 类的特定实例。我需要包含在模块中的方法,并且我希望 Box 实例能够动态地包含模块。现在我正在使用带有 eval 的钩子:

它工作得很好,但是当我使用eval时我真的觉得很脏。我正在寻找类似的东西:

但我无法让 eigenclass 运行class_eval而无需像以下那样对类进行猴子补丁:

有没有一种漂亮(可靠)的方法可以让我做到这一点?

0 投票
4 回答
3579 浏览

ruby - Ruby 中的匿名类

我有两个问题:

  1. 方法是否f_1属于元类匿名类?
  2. 方法是否f_2属于匿名类?

与以下代码相关:

0 投票
2 回答
1324 浏览

ruby-on-rails - 为什么学习 Ruby 中的元编程和特征类很重要?

我目前正在尝试使用 Ruby 和 Rails,并且我已经阅读了有关元编程的教程和书籍中的一些部分。许多人提到它是 Ruby 的重要组成部分,但他们并没有真正深入细节。就好像元编程是 Ruby 程序员的最后一道防线。来自 .NET 背景,我很难理解为什么它如此有用。

  • 使用元编程有什么好处?
  • 什么是特征类,它与单例有何不同?
  • 在什么情况下使用元编程很常见?
  • 使用代码来修改其他代码的行为,尤其是不属于您自己的代码,有哪些道德含义?
0 投票
3 回答
537 浏览

ruby - 是否有可能在 Ruby 中获得所有的特征类?

在 Ruby 中获取所有模块的列表很容易:

但是,是否可以获得所有特征类(也称为单例类或元类)的列表?或者特征类是不可见的?

我试过了

我正在尝试获取特征类,因为我想列出脚本中定义的所有方法。我可以查找由模块和类定义的所有实例方法,然后查找模块和类(或所有对象,如果我想占用 CPU)的单例方法,但这似乎有点笨拙。