<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">On Sat, Nov 19, 2016 at 11:59 PM, Adrian Zubarev via swift-evolution <span dir="ltr">&lt;<a href="mailto:swift-evolution@swift.org" target="_blank">swift-evolution@swift.org</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div>From some older evolution-thread:<div><span style="background-color:rgba(255,255,255,0)"><span style="border-radius:3px;word-wrap:normal;line-height:normal"><br></span></span></div><div><span style="background-color:rgba(255,255,255,0)"><span style="border-radius:3px;word-wrap:normal;line-height:normal">extension SignedNumberType { </span> </span></div><div><span style="background-color:rgba(255,255,255,0)">    var sign: Self { </span></div><div><span style="background-color:rgba(255,255,255,0)">       if self == (0 as Self) { </span></div><div><span style="background-color:rgba(255,255,255,0)">          return (0 as Self) </span></div><div><span style="background-color:rgba(255,255,255,0)">       } else if self &gt; (0 as Self) { </span></div><div><span style="background-color:rgba(255,255,255,0)">          return (1 as Self) </span></div><div><span style="background-color:rgba(255,255,255,0)">       } </span></div><div><span style="background-color:rgba(255,255,255,0)">       return (-1 as Self) </span></div><div><span style="background-color:rgba(255,255,255,0)">    } </span></div><div><span style="background-color:rgba(255,255,255,0)">}</span><div><div><span class="gmail-HOEnZb"><font color="#888888"><div class="gmail-m_-272053476017360696bloop_sign"><div style="font-family:helvetica,arial;font-size:13px">-- <br>Adrian Zubarev<br>Sent with Airmail</div></div></font></span></div></div></div></div></blockquote><div><br></div>Just played with this and it turns out that due to the implicit nature of IntegerLiteralConvertible, you don&#39;t need any of the &quot;as Self&quot;s:<div><br></div><div><div>extension SignedNumber{</div><div>    var sign: Self {</div><div>        if self == 0 {</div><div>            return 0</div><div>        } else if self &gt; 0 {</div><div>            return 1</div><div>        }</div><div>        return -1</div><div>    } </div></div><div>}</div><div><br></div></div></div></div>