2016-03-19 18 views
-2

はじめに:私はattr_accessorのための標準的な定義を理解し、そのattr_accessorを2つのインスタンスメソッド、セッターと作家の略で、attr_accessorは、インスタンス変数は、クラス全体でアクセスできるようにすることができます知っています。attr_accessorに要素が含まれている場合、たとえば。 ':name'、 'name ='メソッドが必要ですか?

しかし、今、次に私は、要素がattr_accessorに含まれており、メソッドとして定義されて参照してください。

私の質問です:なぜそれが起こるのですか?それは私が見た悪いコードですか?

擬似/サンプルコード:事前に

class Such_n_such 
    attr_accessor :name, :color 
      #code omitted 
     def color=(color) 
     (some code) 
     end 

ありがとう!

+1

は同じことをセッターと作家ませんか? – sawa

+0

は、私はそうは思わない - セッターは「DEF @name =名前です」、と筆者はDEF =(名) – YCode

答えて

3

...色は数値、文字列、などかもしれないという事実に撮りたいです。私はカスタムsetterメソッドでattr_readerを使用して好む

attr_accessor :name 
attr_reader :color 

def color=(color) 
    # ... 
end 
0

はい、attr_accessorは、その属性のセッターとゲッターメソッドで追加し、カスタムセッターが必要な場合ありません、それは悪い習慣ではありません。あなたの例のような色のためのセッターが欲しいと言ってください。あなたは私はあなたがattr_accessorを使用し、セッターをオーバーライドするべきではないと主張するだろう

+0

に名前を付けないでください」のように、値を再設定することができますのように、値、期間を設定し、つまり、attr_accessorはカスタムセッターによってオーバーライドされますか? – YCode

+1

いいえ、上書きされません。上書きされます。継承はないため、上書きはありません。 –

関連する問題