私はこのような構造体を持っています:
class Item < Struct.new(:url, :list)
def list
@list ||= Array.new
end
end
.list()
今日、と[: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]
これはなぜですか?また、デフォルトの空の配列を適切に持つように構造体を作成するにはどうすればよいですか?