ruby pickaxe的书中说attr_访问器是类方法
在《红宝石鹤嘴锄》一书中,有一句话说 attr_访问器是在类模块中定义的类方法ruby pickaxe的书中说attr_访问器是类方法,ruby,class,methods,instance,attr-accessor,Ruby,Class,Methods,Instance,Attr Accessor,在《红宝石鹤嘴锄》一书中,有一句话说 attr_访问器是在类模块中定义的类方法 但是attr\u accessor不是一种实例方法吗?我在这里遗漏了什么吗?是的,我能找到的所有文档都同意attr\u accessor是模块的一个实例方法,我相信它必须是一个实例而不是类方法才能完成它的功能 我猜这只是一个打字错误。作者可能只是想指出,attr\u accessor和friends不是语言本身的一部分,而是模块类的方法,他们无意中说的是“类”而不是“实例” 更新:事实上,我在我的副本(10周年纪念版
但是
attr\u accessor
不是一种实例方法吗?我在这里遗漏了什么吗?是的,我能找到的所有文档都同意attr\u accessor
是模块的一个实例方法,我相信它必须是一个实例而不是类方法才能完成它的功能
我猜这只是一个打字错误。作者可能只是想指出,attr\u accessor
和friends不是语言本身的一部分,而是模块类的方法,他们无意中说的是“类”而不是“实例”
更新:事实上,我在我的副本(10周年纪念版)中找不到你的报价,尽管它是印刷品而不是PDF,所以我无法轻松搜索。我能找到的最接近的东西是:
类属性声明不是Ruby语法的一部分:它们只是在ClassModule
中定义的自动创建访问器方法的方法
你引用的那句话很可能是比你引用的版本晚的时候被删掉的
更新2:这是正式的打字错误。如第382页所列:
“attr_访问器是在类模块中定义的类方法,因此在所有模块和类定义中都可用。”
它应该是一个私有实例方法——Dave Thomas
是的,我能找到的所有文档都同意
attr\u accessor
是模块的一个实例方法,我相信它必须是一个实例而不是类方法才能完成它的功能
我猜这只是一个打字错误。作者可能只是想指出,attr\u accessor
和friends不是语言本身的一部分,而是模块类的方法,他们无意中说的是“类”而不是“实例”
更新:事实上,我在我的副本(10周年纪念版)中找不到你的报价,尽管它是印刷品而不是PDF,所以我无法轻松搜索。我能找到的最接近的东西是:
类属性声明不是Ruby语法的一部分:它们只是在ClassModule
中定义的自动创建访问器方法的方法
你引用的那句话很可能是比你引用的版本晚的时候被删掉的
更新2:这是正式的打字错误。如第382页所列:
“attr_访问器是在类模块中定义的类方法,因此在所有模块和类定义中都可用。”
它应该是一个私有实例方法——Dave Thomas
我明白你的意思(我知道attr_accessor是一种方法),但也许我误解了术语?根据模块的文档,attr_accessor位于“私有实例方法”部分。@jeffstone哦,是的,我想你是对的。现在我想起来,这是有道理的。不要介意。我现在假设这只是一个打字错误;他们可能只是想指出它是作为模块类的一部分实现的,并且无意中说了“类”而不是“实例”。好的,谢谢。我将把这个问题留一段时间,看看是否有其他解释,但据我所知,这只是模块的一个实例方法,我也有第10版的印刷品。在第379页(第24.5节-元编程类级宏),段落的第二句以“回想两个示例…”开头。我的另一个想法是,通过类方法,它们意味着它是在类上定义的,而不是类的特定实例(所以他们不是指单例方法,因为你可以称它为Module.attr_accessor,而是你可以在模块的任何实例上调用它)我理解你的意思(我知道attr_accessor是一种方法),但也许我误解了术语?根据模块的文档,attr_accessor在“私有实例方法"第节。@JeffStorey哦,是的,我想你是对的。现在我想这其实是有道理的。没关系。我现在假设这只是一个打字错误;他们可能只是想指出它是作为模块类的一部分实现的,并且无意中说了“类”而不是“实例”。好的,谢谢。我将留下这个问题打开一段时间,看看是否有其他解释,但据我所知,这只是模块的一个实例方法。我也有第10版的印刷品。它在第379页(第24.5节-元编程类级宏),段落的第二句以“回想两个示例…”开头我的另一个想法是,通过类方法,他们意味着它是在类上定义的,而不是在类的特定实例上定义的(因此,他们不是指单例方法,因为在某种意义上,您可以将其称为Module.attr_accessor,而是您可以在模块的任何实例上调用它)