1

ルビーつるはしの本には、

attr_accessorは、クラスModuleで定義されたクラスメソッドです。

しかしattr_accessor、インスタンスメソッドではありませんか?ここで何かが足りませんか?

4

1 に答える 1

4

はい、私が見つけることができるすべてのドキュメントattr_accessorは、それがModuleのインスタンスメソッドであることに同意します。それが行うことを実行するには、クラスメソッドではなくインスタンスである必要があると思います。

私の推測では、それは単なるタイプミスだと思います。attr_accessor著者はおそらく、適切な言語の一部ではなく、友人はModuleクラスのメソッドにすぎず、誤って「インスタンス」ではなく「クラス」と言ったことを指摘しようとしていました。

更新:実際、PDFではなく印刷されているのに私のコピー(10周年記念版)であなたの見積もりを見つけることができないので、簡単に検索することはできません。私が見つけることができる最も近いものは次のとおりです。

クラス属性宣言はRuby構文の一部ではありません。これらは、Moduleアクセサーメソッドを自動的に作成するクラスで定義されたメソッドにすぎません。

あなたが引用した行があなたの版よりも後の版から編集された可能性は十分にあります。

更新2:正式にはタイプミスです。正誤表に382ページとして記載されています:

「attr_accessorはクラスModuleで定義されたクラスメソッドであるため、すべてのモジュールおよびクラス定義で使用できます。」</ p>

プライベートインスタンスメソッドである必要があります--DaveThomas

于 2012-07-31T00:57:57.580 に答える