数组的attr_accessor?

nev*_*ame 12 ruby

我希望使用一个数组作为实例变量attr_accessor.

但不attr_accessor只是为了弦乐?

如何在阵列上使用它?

更新:

例如.如果你想:

object.array = "cat"
object.array = "dog"
pp object.array
=> ["cat", "dog"]
Run Code Online (Sandbox Code Playgroud)

那你必须自己创建这些方法吗?

Rya*_*ary 20

class SomeObject
  attr_accessor :array

  def initialize
    self.array = []
  end
end

o = SomeObject.new

o.array.push :a
o.array.push :b
o.array << :c
o.array.inspect   #=> [:a, :b, :c]
Run Code Online (Sandbox Code Playgroud)


Dou*_*las 14

重新更新:

虽然你可以实现一个按你所描述的方式运行的类,但这很不寻常,并且可能会混淆使用该类的任何人.

通常访问者有setter和getter.当你使用setter设置某些东西时,你会从getter中得到同样的东西.在下面的示例中,您将获得与getter完全不同的内容.您应该使用一种add方法,而不是使用setter .

class StrangePropertyAccessorClass

  def initialize
    @data = []
  end

  def array=(value)   # this is bad, use the add method below instead
    @data.push(value)
  end

  def array
    @data
  end

end

object = StrangePropertyAccessorClass.new

object.array = "cat"
object.array = "dog"
pp object.array
Run Code Online (Sandbox Code Playgroud)

add方法如下所示:

  def add(value)
    @data.push(value)
  end

...

object.add "cat"
object.add "dog"
pp object.array
Run Code Online (Sandbox Code Playgroud)

  • 是的,它也有意义,不像`object.array ="cat"`,它完全是蝙蝠. (4认同)