質問

arts_accessorを配列に作成するにはどうすればよいですか?

例えば

class MyClass

  attr_accessor :my_attr_accessor

  def initialize()
  end

  def add_new_value(new_array)
    @my_attr_accessor += new_array
    return @my_attr_accessor
  end

end

my_class = MyClass.new
my_class.my_attr_accessor = 1
my_class.my_attr_accessor[1] = 2
my_class.my_attr_accessor.push = 3
my_class.add_new_value(5)

my_class.my_attr_accessor
=> [1, 2, 3, 5]
役に立ちましたか?

解決

配列を指すインスタンス変数を使用して、そのインスタンス変数からアクセサを作成するだけです。

クラスの中には、次のようなものが含まれています。

attr_accessor :my_attr_accessor
def initialize
    @my_attr_accessor = []
end

使用することに注意してくださいattr_accessor 変数の値を変更できます。アレイがとどまることを確認したい場合は、使用してください attr_reader 代わりに attr_accessor. 。引き続き配列要素にアクセスして設定し、配列で操作を実行することができますが、新しい値に置き換えることはできません。 += 連結は機能しません。

他のヒント

常に存在する配列で大丈夫なら、 @David4Devの答えは良いです。アレイが最初の使用法で存在するだけで、ユーザーが(割り当てを介して)新しい配列に置き換えることを望まない場合:

class MyClass
  def my_attr_accessor
    @my_attr_accessor ||= []
  end
  def add_new_value( value )
    my_attr_accessor << value
  end
  def add_new_values( values_array )
    my_attr_accessor.concat values_array
  end
end

ユーザーは引き続き電話することができます my_class.my_attr_accessor.replace( [] ) 拭き取ります。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top