ruby pickaxe书说attr_accessor是类方法

时间:2012-07-31 00:53:44

标签: ruby class methods instance attr-accessor

在红宝石镐书中,有一行说

  

attr_accessor是类Module

中定义的类方法

attr_accessor不是实例方法吗?我在这里错过了什么吗?

1 个答案:

答案 0 :(得分:4)

是的,我能找到的所有文档都同意attr_accessor是Module的实例方法,我相信它必须是一个实例而不是类方法才能完成它的工作。

我的猜测是,这只是一个错字。作者可能只是想指出,attr_accessor和朋友不仅仅是语言的一部分,而只是Module类的方法,他们不小心说“类”而不是“实例”。

更新:事实上,我在我的副本(10周年纪念版)中找不到你的报价,虽然它是打印而不是PDF,所以我不能轻易搜索它。我能找到的最接近的是:

  

类属性声明不是Ruby语法的一部分:它们只是类Module中定义的自动创建访问器方法的方法。

你引用的那行很可能是在你的版本之后编辑的。

更新2:这是官方的错字。在the errata中列为第382页:

  

“attr_accessor是在类Module中定义的类方法,所以在所有模块和类定义中都可用。”

     

它应该是一个私有实例方法 - Dave Thomas