Ruby 元编程:方法定义与作用域探索
1. 定义类方法
1.1 使用对象前缀定义类方法
在 Ruby 中,我们可以使用对象前缀来定义类方法。以下是一个示例代码:
def self.display
--snip--
end
这里, self
代表当前类(假设为 Quote
类)。当使用这种方式定义方法时,Ruby 会执行以下步骤:
1. 找到对象的类 :由于 self
是一个类( Quote
),其类实际上是 Quote
的元类。
2. 保存新方法 :Ruby 将 display
方法保存到 Quote
的元类的方法表中,使其成为一个新的类方法。
需要注意的是,如果调用 Quote.class
,Ruby 会返回 Class
,因为所有类都是 Class
类的实例。而元类是一个内部概念,通常在 Ruby 程序中是隐藏的。要查看 Quote
的元类,可以调用 Quote.singleton_class
,它会返回 #<Class:Quote>
。