title: What happens when method name and block name are same?
body: <p>I am trying to understand the below behavior:</p>
  
  <pre><code>def test
    puts "In Method"
  end
  
  test
  #=&gt; In Method
  
  test {puts "In Block" }
  #=&gt; In Method
  </code></pre>
  
  <p>My interpretation is that <code>test</code> is a method and I am passing <code>{puts "In Block"}</code> as an argument to this method. Since the method does not use the argument, it is printing the default <code>"In Method"</code>. Is it right?</p>
  
  <p>How do we differentiate between a block and method call? Could <code>test {puts "In Block"}</code> also have been interpreted as a block? Is <code>yield</code> the only way to execute a code block?</p>