在红宝石镐书中,有一行说
attr_accessor是类Module
中定义的类方法
但attr_accessor
不是实例方法吗?我在这里错过了什么吗?
答案 0 :(得分:4)
是的,我能找到的所有文档都同意attr_accessor
是Module的实例方法,我相信它必须是一个实例而不是类方法才能完成它的工作。
我的猜测是,这只是一个错字。作者可能只是想指出,attr_accessor
和朋友不仅仅是语言的一部分,而只是Module类的方法,他们不小心说“类”而不是“实例”。
更新:事实上,我在我的副本(10周年纪念版)中找不到你的报价,虽然它是打印而不是PDF,所以我不能轻易搜索它。我能找到的最接近的是:
类属性声明不是Ruby语法的一部分:它们只是类
Module
中定义的自动创建访问器方法的方法。
你引用的那行很可能是在你的版本之后编辑的。
更新2:这是官方的错字。在the errata中列为第382页:
“attr_accessor是在类Module中定义的类方法,所以在所有模块和类定义中都可用。”
它应该是一个私有实例方法 - Dave Thomas