问题标签 [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 投票
1 回答
302 浏览

ruby - 关于 Ruby 中的类定义

最近在研究 Ruby 中类的一些细节,被类定义弄糊涂了。

在Ruby中,类定义如下,

和它一样

然后我很困惑。对于第一种情况,self可以看成是一个指向当前使用对象的指针,上下文的当前类是A。方法查找是递归完成的。但我的问题是,def是做什么的?它如何改变当前对象和上下文?第二种情况的问题是一样的。class << self之类的描述如何改变当前对象和上下文?

还有一个问题。据我所知,所有 Class 对象都遵循 Fly-weight 等设计模式,因为它们共享具有相同定义的相同 Class 对象。然后特征类变得混乱。既然eigenclass中的def其实是用Class对象定义了一个方法,那怎么会和“def self.*”相关呢?

从外面看起来太复杂了,我可能需要Ruby的设计细节。

0 投票
2 回答
589 浏览

ruby - 元编程:当我们调用在类方法中定义的实例方法时,方法分派在哪里?

我正在阅读Metaprogramming Ruby,只是想澄清一下以下释义代码:

Q1 我的第一个问题是关于文件末尾的两个方法调用:my_class_method :foomy_class_method :bar. 我是否认为在实例化 MyClazz 对象时它们都会自动调用?

Q2当 Ruby 生成这些方法 (def foodef bar) 时,它会将它们放在MyClazz 的eigenclass 中,即使它们是实例方法。那么这是否意味着 Ruby 在需要时会针对类和实例方法查找 eigenclass?

我只是想在我深入本书之前澄清这一点。

0 投票
1 回答
2975 浏览

ruby - 如何找到私有单例方法

我已经定义了一个Vehicle这样的模块

调用Vehicle.singleton_methods返回[:build]

如何检查由定义的所有私有单例方法Vehicle

0 投票
1 回答
2296 浏览

ruby - Ruby中的类和该类的单例有什么区别?

好的,所以我正在尝试在 Ruby 中进行一些元编程,但我有点困惑。根据我读过的几篇文章(如这篇文章),为了向 Ruby 类动态添加类方法,您必须使用该类的单例类:

为什么会这样,这和这有什么不同?

(对不起,如果这个问题包含任何错误的假设。就像我说的,我有点困惑。)

0 投票
3 回答
232 浏览

ruby - 知道一个类是否是一个特征类

判断一个类some_class是否是某个对象的特征类的最佳方法是什么?

0 投票
1 回答
949 浏览

ruby-on-rails - 类方法上的 ActiveSupport::Callbacks

是否可以ActiveSupport::Callbacks在类方法上使用?更具体地说,在下面的模块中,你会在哪里include ActiveSupport::Callbacks创建define_callbacksrun_callbacks共享相同的状态?

更新

如果有可能,但我无法确定,那肯定不是ActiveSupport::Callbacks为它设计的。最好在#handle.

0 投票
2 回答
182 浏览

ruby - 隐式上下文和特征类

我最近发现了一篇关于 Ruby 中的隐式上下文的有趣文章,我发现这段经历非常开放。我知道 Ruby 不仅包含对self默认方法接收器)的引用,还包含对当前类(也称为默认定义`klass')的引用。

从文章中,假设class定义将当前类self当前类都设置为正在定义的类应该是正确的;就我们考虑普通的方法定义(即不使用点语法来定义单例方法)而言,在方法定义的上下文中,用def,self指的是接收对象,并且当前类没有改变。

我认为不考虑点语法来定义是安全的原因是 Ruby 还提供了一种打开类的特征类的显式方法,而我感兴趣的是了解在打开特征类时如何管理这两个隐式上下文.

使用def 众所周知的语法打开一个特征类:

将 foo 定义为 的单例方法A即其 eigenclass 的实例方法(be it A')。这段代码也会打印#<Class:A>,所以说<<语法将当前类self当前类都设置为正确A'吗?

0 投票
2 回答
1162 浏览

ruby - 为什么模块的单例方法在混合的下游特征类中不可见?

我了解常规方法查找路径,即class, superclass/module, all the way up to BasicObject. 我认为对于单例版本的链也是如此,但当您在元链中混合模块时似乎并非如此。如果有人能解释为什么在我将这个模块包含在 Vehicle 的 eigenclass 中时,为什么在下面的示例中调用Automobile模块的banner方法而不是它的单例版本,我将不胜感激。

0 投票
2 回答
167 浏览

ruby - 调用eigenclass的类方法

我需要为类的某些实例覆盖类方法

有没有办法在不显式获取特征类的情况下调用覆盖方法?

0 投票
4 回答
91 浏览

ruby - 如何在 Ruby 中获取与给定单例(或特征)类对应的对象?

假设以下代码:

有什么办法可以从中得到aAs