ruby pickaxe book says attr_accessor is class method

岁酱吖の 提交于 2019-12-13 19:18:24

问题


In the ruby pickaxe book, there is a line that says

attr_accessor is a class method defined in class Module

But isn't attr_accessor an instance method? Am I missing something here?


回答1:


Yes, all documentation I can find agrees that attr_accessor is an instance method of Module, and I believe it would have to be an instance rather than class method to do what it does.

My guess is that it's just a typo. The authors were probably just trying to point out that rather than being part of the language proper, attr_accessor and friends are just methods of the Module class, and they accidentally said "class" rather than "instance".

Update: In fact, I can't find your quote in my copy (10th anniversary edition), although it's print rather than PDF, so I can't easily search it. The closest thing I can find is:

Class attribute declarations are not part of the Ruby syntax: they are simply methods defined in class Module that create accessor methods automatically.

It's quite possible that the line you quoted was edited out of editions later than yours.

Update 2: It's officially a typo. Listed as page 382 in the errata:

“attr_accessor is a class method defined in class Module and so is available in all module and class definitions.”

It should be a private instance method--Dave Thomas



来源:https://stackoverflow.com/questions/11731698/ruby-pickaxe-book-says-attr-accessor-is-class-method

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!