22

Ruby には、インスタンス変数 、attrattr_readerattr_writerおよびの 4 つの異なる getter メソッドと setter メソッドがありますattr_accessor。問題は、 Rubyattr :dilithiumではと同じで、追加のパラメーター true が渡された場合attr_reader :dilithiumと同じですか? attr_accessor :dilithiumつまりは

class Enterprise
  attr :dilithium, true

と同じ

class Enterprise
  attr_accessor :dilithium

2 つの関数attrattr_accessor多かれ少なかれ冗長ですか?

4

3 に答える 3

29

1 つの違いは、attr_accessorand friends がより明確になり、オプションの boolean 引数 toattrdeprecatedになったことです。それ以外に、attrドキュメントがないという事実以外には、実際の違いはありません。

于 2012-12-19T17:45:29.340 に答える
7

Ruby 1.8 ではattr、1 つの属性のみを定義でき、オプションtrueで setter を作成できます。1.9 では次のように動作attr_readerします。複数の属性を許可します。@Linuxios が言うように、オプションのブール値は非推奨です。

于 2012-12-19T18:13:03.813 に答える