对不起的头衔很抱歉,但我有点失落。
我正在试图找出哪些对象/类实时方法(如DelegateClass)以及这些类型的方法的术语是什么。我正在阅读 Metaprogramming Ruby ,在书中,这些方法通常被称为Mimic Methods,但是在网上搜索会得到各种结果,所以我想知道是否有一个更好的名字它们。
我检查了DelegateClass的源代码,我认为它已添加到Object中,但它不存在。我可以看到同一个rb文件中的类Delegator和SimpleDelegator是添加作为常量(虽然我不确定它们是如何添加的)。
谢谢!
答案 0 :(得分:3)
刚刚找到答案。它是Object
中的私有方法ruby-1.9.2-p290 :033 > Object.private_instance_methods(false).grep /Dele/
=> [:DelegateClass]
修改强>
我发现我需要理解的是在给定的上下文中当前的类是什么?。
答案 1 :(得分:0)
仔细查看文件。
def DelegateClass(superclass)
klass = Class.new(Delegator)
...
并使用
method(:DelegateClass).owner
找到它所在的类。正如评论中所提到的,Module上的私有实例方法包含在Object上定义的任何内容。
所以不,DelegateClass()
不是一个特殊的方法,除了以大写形式调用(这使它看起来像一个常量)。它只返回一个可以继承的现场创建的匿名类。