我希望使用一个数组作为实例变量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)