Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/unity3d/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
ruby pickaxe的书中说attr_访问器是类方法_Ruby_Class_Methods_Instance_Attr Accessor - Fatal编程技术网

ruby pickaxe的书中说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_访问器是在类模块中定义的类方法


但是
attr\u accessor
不是一种实例方法吗?我在这里遗漏了什么吗?

是的,我能找到的所有文档都同意
attr\u accessor
是模块的一个实例方法,我相信它必须是一个实例而不是类方法才能完成它的功能

我猜这只是一个打字错误。作者可能只是想指出,
attr\u accessor
和friends不是语言本身的一部分,而是模块类的方法,他们无意中说的是“类”而不是“实例”

更新:事实上,我在我的副本(10周年纪念版)中找不到你的报价,尽管它是印刷品而不是PDF,所以我无法轻松搜索。我能找到的最接近的东西是:

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

你引用的那句话很可能是比你引用的版本晚的时候被删掉的

更新2:这是正式的打字错误。如第382页所列:

“attr_访问器是在类模块中定义的类方法,因此在所有模块和类定义中都可用。”

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


是的,我能找到的所有文档都同意
attr\u accessor
是模块的一个实例方法,我相信它必须是一个实例而不是类方法才能完成它的功能

我猜这只是一个打字错误。作者可能只是想指出,
attr\u accessor
和friends不是语言本身的一部分,而是模块类的方法,他们无意中说的是“类”而不是“实例”

更新:事实上,我在我的副本(10周年纪念版)中找不到你的报价,尽管它是印刷品而不是PDF,所以我无法轻松搜索。我能找到的最接近的东西是:

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

你引用的那句话很可能是比你引用的版本晚的时候被删掉的

更新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,而是您可以在模块的任何实例上调用它)