Ruby核心参考是否曾解释方法查找路径?

时间:2018-04-09 23:39:57

标签: ruby

我从David Flanagan和Yukihiro Matsumoto那里找到了来自 The Ruby Programming Language excerpt,其中列出了方法查找的基础:

  

当Ruby评估方法调用表达式时,它必须首先确定要调用哪个方法。执行此操作的过程称为方法查找或方法名称解析。对于方法调用表达式o.m,Ruby使用以下步骤执行名称解析:

     
      
  1. 首先,它检查名为m的单例方法的o的本征类。

  2.   
  3. 如果在本征类中找不到方法m,Ruby会在o的类中搜索名为m的实例方法。

  4.   
  5. 如果在类中找不到方法m,Ruby会搜索o类所包含的任何模块的实例方法。如果该类包含多个模块,则以与它们包含的顺序相反的方式搜索它们。也就是说,首先搜索最近包含的模块。

  6.   
  7. 如果在o类或其模块中找不到实例方法m,则搜索会将继承层次结构向上移动到超类。对继承层次结构中的每个类重复步骤2和3,直到搜索到每个祖先类及其包含的模块。

  8.   
  9. 如果在完成搜索后找不到名为m的方法,则会调用名为method_missing的方法。为了找到此方法的适当定义,名称解析算法从步骤1开始。内核模块提供method_missing的默认实现,因此保证名称解析的第二次传递成功。在处理未定义的方法中更详细地介绍了method_missing方法。

  10.   

David Black在第13.1.3页第394页 Singleton类中的方法查找路径中讨论了 The Well-Grounded Rubyist 2nd Edition 中的概念。

我发现有关Stack溢出的问题可以从引用方法查找路径的答案中受益。我开始想知道方法查找路径是否有任何官方文档。

我在http://ruby-doc.org/core-2.5.0/doc/syntax/methods_rdoc.html搜索"路径"和"查找"但是没找到任何东西。

使用网站对"method lookup"的搜索功能在GitHub上发布了一堆有用的Gists,但没有官方文档。

  • Ruby核心参考是否曾解释方法查找路径?
  • 哪里有记录?

0 个答案:

没有答案