В рубиновой кирке написано, что attr_accessor - метод класса

В рубиновом кирке есть строчка

attr_accessor - это метод класса, определенный в классе Module

Но не attr_accessor метод экземпляра? Я что-то здесь упускаю?

1 ответ

Решение

Да, вся документация, которую я могу найти, согласна с тем, что attr_accessor является методом экземпляра модуля, и я считаю, что для того, что он делает, должен быть экземпляр, а не метод класса.

Я думаю, что это просто опечатка. Авторы, вероятно, просто пытались указать, что вместо того, чтобы быть частью самого языка, attr_accessor и друзья - это просто методы класса Module, и они случайно сказали "класс", а не "экземпляр".

Обновление: На самом деле, я не могу найти вашу цитату в своей копии (издание 10-й годовщины), хотя она печатная, а не PDF, поэтому я не могу легко найти ее. Ближайшая вещь, которую я могу найти:

Объявления атрибутов класса не являются частью синтаксиса Ruby: они просто методы, определенные в классе Module которые создают методы доступа автоматически.

Вполне возможно, что цитируемая вами строка была отредактирована из выпусков позже, чем ваша.

Обновление 2: это официально опечатка. Перечислено как страница 382 в опечатках:

"Attr_accessor - это метод класса, определенный в классе Module и доступный во всех определениях модуля и класса".

Это должен быть метод частного экземпляра - Дейв Томас

Другие вопросы по тегам