<html><head><meta http-equiv="content-type" content="text/html; charset=utf-8"></head><body dir="auto"><br><div>On Oct 4, 2017, at 18:30, Kevin Lundberg via swift-users &lt;<a href="mailto:swift-users@swift.org">swift-users@swift.org</a>&gt; wrote:<br><br></div><blockquote type="cite"><div>
  
    <meta http-equiv="Content-Type" content="text/html;
      charset=windows-1252">
  
  
    <p>Can you do something like this?</p>
    <p>func isNumber&lt;T: Numeric&gt;(_ value: T) -&gt; Bool { return
      true }</p>
    <p>func isNumber&lt;T&gt;(_ value: T) -&gt; Bool { return false }</p>
    <p>I don't recall whether or not swift will pick the right version
      of the function here, or whether this can even compile (mac isnt
      open at the moment), but if you can overload functions in this way
      then it might be much nicer than checking for lots of concrete
      types.</p></div></blockquote><br><div>It’ll compile, but you’ll get the wrong answer if it’s called from another generic function that isn’t similarly overloaded for `T` vs `T: Numeric`. I’m not at my computer right now, but IIRC, this is correct:</div><div><br></div><div>func foo&lt;T&gt; (_ value:T) -&gt; Bool {</div><div>&nbsp; &nbsp; return isNumber(value)</div><div>}</div><div><div><span style="background-color: rgba(255, 255, 255, 0);">func bar&lt;T&gt; (_ value:T) -&gt; Bool {</span></div><div><span style="background-color: rgba(255, 255, 255, 0);">&nbsp; &nbsp; return isNumber(value)</span></div><div><span style="background-color: rgba(255, 255, 255, 0);">}</span></div></div><div><div><span style="background-color: rgba(255, 255, 255, 0);">func bar&lt;T: Numeric&gt; (_ value:T) -&gt; Bool {</span></div><div><span style="background-color: rgba(255, 255, 255, 0);">&nbsp; &nbsp; return isNumber(value)</span></div><div><span style="background-color: rgba(255, 255, 255, 0);">}</span></div></div><div><span style="background-color: rgba(255, 255, 255, 0);">isNumber(0) //true</span></div><div><span style="background-color: rgba(255, 255, 255, 0);">isNumber(“”) //false</span></div><div><span style="background-color: rgba(255, 255, 255, 0);">foo(0) //false</span></div><div><span style="background-color: rgba(255, 255, 255, 0);">foo(“”) //false</span></div><div><span style="background-color: rgba(255, 255, 255, 0);">bar(0) //true</span></div><div><span style="background-color: rgba(255, 255, 255, 0);">bar(“”) //false</span></div><div><span style="background-color: rgba(255, 255, 255, 0);"><br></span></div><div><span style="background-color: rgba(255, 255, 255, 0);">- Dave Sweeris</span></div></body></html>