title: Why does passing a method as an argument (&block) not work?
body: <p><code>clock</code> takes a block:</p>
  
  <pre><code>def clock(&amp;block)
    hours = Time.new.hour
    puts hours
    hours.times do
      block.call
    end
  end
  </code></pre>
  
  <p>This works, and puts <code>"DONG"</code> on the screen, based on the hours of today:</p>
  
  <pre><code>clock do
    puts "DONG..."
  end
  </code></pre>
  
  <p>I'm trying to pass <code>dong</code> method:</p>
  
  <pre><code>def dong
    puts "DONG..."
  end
  </code></pre>
  
  <p>to <code>clock</code> as its block. This:</p>
  
  <pre><code>clock(dong)
  </code></pre>
  
  <p>throws an error:</p>
  
  <pre><code>`clock': wrong number of arguments (1 for 0) (ArgumentError)
  </code></pre>
  
  <p>Can someone explain why the first one works, but the second doesn't? Do you have to explicitly define the code block you're passing, or can you reference another method as a code block?</p>