我有一个这样的结构:
class Item < Struct.new(:url, :list)
def list
@list ||= Array.new
end
end
我今天发现.list()
and[:list]
返回不同的东西:
i = Item.new
#=> #<struct Item url=nil, list=nil>
i.list
#=> []
i[:list]
#=> nil
i.list << 1
#=> [1]
i.list += [2]
#=> [1, 2]
i.list
#=> [1]
i[:list]
#=> [1, 2]
为什么会这样,我怎样才能编写我的结构以正确地拥有默认的空数组?