title: How can a closure in Swift only be passed in a * for the reduce function?
body: <pre><code>extension Array {
  func reduce&lt;T&gt;(_ initial: T, combine: (T, Element) -&gt; T) -&gt; T {
      var result = initial
      for x in self {
          result = combine(result, x)
      }
      return result
    }
   }
  </code></pre>
  <p>How does the below function work when it only passes a * to the combine closure?</p>
  <pre><code>func productUsingReduce(integers: [Int]) -&gt; Int {
      return integers.reduce(1, combine: *)
  }
  </code></pre>