title: Use of the bang?
body: <p>Some people say that the bang <code>!</code> indicates the method "may" modify the object.</p>
  
  <p>In this example:</p>
  
  <pre><code>foo = "A STRING"
  foo.downcase
  puts foo
  # =&gt; A STRING
  foo.downcase!
  puts foo
  # =&gt; a string
  </code></pre>
  
  <p>the bang symbol appears to be causing a side effect. Is <code>obj.method!</code> equivalent to <code>obj = obj.method</code>? If not, why? Is there some method for which these two expressions are not equivalent?</p>