首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >阵列的attr_accessor?

阵列的attr_accessor?
EN

Stack Overflow用户
提问于 2010-09-12 08:50:02
回答 4查看 18.5K关注 0票数 14

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

但是attr_accessor不是只用于字符串吗?

如何在数组上使用它?

更新:

例如:如果您愿意:

代码语言:javascript
复制
object.array = "cat"
object.array = "dog"
pp object.array
=> ["cat", "dog"]

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

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2010-09-12 09:18:25

重新更新您的更新:

尽管你可以实现一个按照你所描述的那样工作的类,但这是非常不寻常的,而且可能会让使用这个类的任何人感到困惑。

通常,访问器有setter和getter。当您使用setter设置某些内容时,您将从getter返回相同的内容。在下面的例子中,你从getter中得到了完全不同的东西。您可能应该使用add方法,而不是使用setter。

代码语言:javascript
复制
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

add方法将如下所示:

代码语言:javascript
复制
  def add(value)
    @data.push(value)
  end

...

object.add "cat"
object.add "dog"
pp object.array
票数 14
EN

Stack Overflow用户

发布于 2010-09-12 08:59:20

代码语言:javascript
复制
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]
票数 20
EN

Stack Overflow用户

发布于 2010-09-12 08:58:23

它对我来说很有效:

代码语言:javascript
复制
class Foo

  attr_accessor :arr

  def initialize() 
    @arr = [1,2,3]
  end

end

f = Foo.new
p f.arr

返回以下内容

代码语言:javascript
复制
$ ruby /tmp/t.rb
[1, 2, 3]
$
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3693298

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档