![]() |
1
2
这是我在实际生产代码中遇到的一个难题。我写了一份详细的解释,解释了 this blog post . 这是TLDR:Ruby使用了比方法更复杂的算法来解析常量。常量查找例程的一个阶段涉及通过超类链查找定义。这个阶段看起来很像方法查找例程,加深了为什么方法和常量在问题中所示的方式不同的谜团。 解释是这两个超类链例程在它们的位置不同 开始 ,即哪个类是链的根。
对于常量,Ruby不引用接收器,因为常量调用与接收器无关。相反,常量超类查找从在发生常量调用的词法范围中打开的类开始。在本例中,打开的类是
|