title: Struct returning different things from reader and hash accessor
body: <p>I have a struct like this:</p>
  
  <pre><code>class Item &lt; Struct.new(:url, :list)
    def list
      @list ||= Array.new
    end
  end
  </code></pre>
  
  <p>I found out today that the <code>.list()</code> and <code>[:list]</code> returns different things:</p>
  
  <pre><code>i = Item.new
  #=&gt; #&lt;struct Item url=nil, list=nil&gt;
  i.list
  #=&gt; []
  i[:list]
  #=&gt; nil
  i.list &lt;&lt; 1
  #=&gt; [1]
  i.list += [2]
  #=&gt; [1, 2]
  i.list
  #=&gt; [1]
  i[:list]
  #=&gt; [1, 2]
  </code></pre>
  
  <p>Why is this and how can I write my struct to have default empty array properly?</p>