私はRubyの基本的な質問があります。なぜなら、自分自身を拡張してモジュールを作成すると、attr_accessorが完璧に動作する理由が分かりません。なぜattr_accessorはextend selfでモジュールで動作しますか?
私が知る限り、attr_accessorはインスタンスクラスで動作するはずですが、一部のreasoneではこれらのモジュールで動作しています。ここで
だから例
module A
extend self
attr_accessor :custom_method
def foo
self.custom_method
end
end
A.custom_method # => nil
A.foo # => nil
A.custom_method = "bar" # => "bar"
A.custom_method # => "bar"
A.foo # => "bar"
で、何がA.custom_methodに起こるのだろうか?それは今からアプリケーション全体にわたって "バー"になるでしょうか?
Aのこの「インスタンス」をどのように破壊できますか?
_ "私は基本的な質問があります。" _ _ ''拡張自己 'は無邪気でシンプルに見えますが、結果は非常に気になるものです。何が起きているのかを理解するには、 'obj = Object.new;のように、その行を削除して別のオブジェクトを拡張する方が簡単かもしれません。 obj.extend(A) '。 – Stefan
'extend'とは何ですか? –