クラスとモジュールでそれぞれ提供されているメソッドcattr_*
とメソッドの違いは、ソースを調べてもわかりません。mattr_*
私はこの質問を読みました:Railsモジュールのmattr_accessorとは何ですか?これは両方の方法についての詳細を提供しますが、違いを強調していません。
だから私の質問は、それらの違いは何ですか、そしてそれらがソースで実質的に同一であるのになぜ両方のメソッドのセットが必要なのですか?また、いつどちらを使うべきですか?
クラスとモジュールでそれぞれ提供されているメソッドcattr_*
とメソッドの違いは、ソースを調べてもわかりません。mattr_*
私はこの質問を読みました:Railsモジュールのmattr_accessorとは何ですか?これは両方の方法についての詳細を提供しますが、違いを強調していません。
だから私の質問は、それらの違いは何ですか、そしてそれらがソースで実質的に同一であるのになぜ両方のメソッドのセットが必要なのですか?また、いつどちらを使うべきですか?
Module
はクラスのスーパークラスであるClass
ため、適切な総称名を考えることができれば、アクセサーを定義するためのメソッドを適用できModule
、モジュールとクラスで機能します。以下が機能することに注意してください。
class Bar
mattr_accessor :test
end
しかし
module Foo
cattr_accessor :test
end
動作しません。
クラス内で使用する必要のあるメソッドにcプレフィックスを付け、モジュール内で使用するメソッドにmプレフィックスを付けると、コードが少し明確になります。