我希望有一个数组作为使用attr_accessor的实例变量。
但是attr_accessor不是只用于字符串吗?
如何在数组上使用它?
更新:
例如:如果您愿意:
object.array = "cat"
object.array = "dog"
pp object.array
=> ["cat", "dog"]那么你必须自己创建这些方法吗?
发布于 2010-09-12 09:18:25
重新更新您的更新:
尽管你可以实现一个按照你所描述的那样工作的类,但这是非常不寻常的,而且可能会让使用这个类的任何人感到困惑。
通常,访问器有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.arrayadd方法将如下所示:
def add(value)
@data.push(value)
end
...
object.add "cat"
object.add "dog"
pp object.array发布于 2010-09-12 08:59: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]发布于 2010-09-12 08:58:23
它对我来说很有效:
class Foo
attr_accessor :arr
def initialize()
@arr = [1,2,3]
end
end
f = Foo.new
p f.arr返回以下内容
$ ruby /tmp/t.rb
[1, 2, 3]
$https://stackoverflow.com/questions/3693298
复制相似问题