我如何创建一个attr_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]
答案 0 :(得分:3)
只需使用指向数组的实例变量,并从该实例变量创建一个访问器。
课程内容包括以下内容:
attr_accessor :my_attr_accessor
def initialize
@my_attr_accessor = []
end
请注意,使用attr_accessor
将允许您更改变量的值。如果您想确保数组保留,请使用attr_reader
代替attr_accessor
。您仍然可以访问和设置数组元素并对阵列执行操作,但是您无法用新值替换它,并且使用+=
进行连接将不起作用。
答案 1 :(得分:1)
如果您对阵列始终存在没问题,@ 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( [] )
将其删除。