<html><head><meta http-equiv="content-type" content="text/html; charset=utf-8"></head><body dir="auto"><div></div><div>It's true prefix operators have the highest precedence (like ∞) but it should be lower so `-3**2` gets mathematically correct evaluated to `-9` if such an expression appears.</div><div><br></div><div>- Maximilian</div><div><br>Am 17.01.2016 um 02:36 schrieb 肇鑫 &lt;<a href="mailto:owenzx@gmail.com">owenzx@gmail.com</a>&gt;:<br><br></div><blockquote type="cite"><div><div dir="ltr"><div class="gmail_default" style="font-family:georgia,serif">I think they are already the highest&nbsp;<span style="font-family:arial,sans-serif;font-size:13px">precedence</span>. That why they need not to be set this property.&nbsp;</div><div class="gmail_default" style="font-family:georgia,serif"><br></div><div class="gmail_default" style="font-family:georgia,serif">Also, I think things like&nbsp;</div><div class="gmail_default" style="font-family:georgia,serif"><br></div><div class="gmail_default"><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><font face="georgia, serif">print(-3**2)<br></font><font face="georgia, serif">print(0-3**2)</font></blockquote><div class="gmail_default"><font face="georgia, serif"><br></font></div><div class="gmail_default"><font face="georgia, serif">should never appear in Swift. As it is hard for human to read.&nbsp;</font></div><div class="gmail_default"><font face="georgia, serif"><br></font></div><div class="gmail_default"><font face="georgia, serif">zhaoxin</font></div><div class="gmail_default"><font face="georgia, serif"><br></font></div></div></div><div class="gmail_extra"><br><div class="gmail_quote">On Sun, Jan 17, 2016 at 5:21 AM, Maximilian Hünenberger <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:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">+1 for me and as far as values go:<br>
<br>
prefix -<br>
precedence 150, same as infix * since it is essentially (-1)*<br>
<br>
prefix +<br>
same as prefix -<br>
<br>
<br>
To break the least amount of code:<br>
<br>
prefix !<br>
precedence 140, which is higher than any other Bool operator (== is highest with 130)<br>
<br>
prefix ~<br>
precedence 170, which is higher than any other binary operator (&lt;&lt; is highest with 160)<br>
<div><div class="h5"><br>
&gt; Am <a href="tel:16.01.2016" value="+8616012016">16.01.2016</a> um 16:30 schrieb Jason Nielsen via swift-evolution &lt;<a href="mailto:swift-evolution@swift.org">swift-evolution@swift.org</a>&gt;:<br>
&gt;<br>
&gt; Hi all,<br>
&gt;<br>
&gt; My proposal is to add a precedence option for prefix and postfix operators.&nbsp; It is great that swift allows for associativity and precedence for binary operators but it hasn't quite gone all the way to make operator overloading fully functional (just an opinion).&nbsp; To illustrate consider the following code:<br>
&gt;<br>
&gt; import CoreFoundation<br>
&gt;<br>
&gt; infix operator ** { associativity right precedence 200 }<br>
&gt;<br>
&gt; func ** (base: Double, power: Double) -&gt; Double {<br>
&gt;&nbsp; &nbsp; &nbsp;return pow(base, power)<br>
&gt; }<br>
&gt;<br>
&gt; print(-3**2)<br>
&gt; print(0-3**2)<br>
&gt;<br>
&gt; which prints 9 and -9.&nbsp; In the first case because unary minus has higher precedence as a prefix operator it evaluates to (-3)*(-3) and the second because - is viewed as a binary operator of lower precedence as (0-(3*3).&nbsp; Exponentiation has higher precedence than subtraction so -3**2 should be -9 and the two expressions above are mathematically equivalent.&nbsp; I originally reported this as a bug (SR-552) as to me the point of operator overloading is to allow you to write numerical expressions cleanly but should give you the correct mathematical result.&nbsp; The only really useful application I can think of for operator overloading is basically as a DSL for numerical expressions.&nbsp; If it doesn't allow you to get correct results without having to put brackets everywhere it sort of defeats the purpose (just my opinion of course).<br>
&gt;<br>
&gt; Best regards,<br>
&gt; Jason<br>
</div></div>&gt; _______________________________________________<br>
&gt; swift-evolution mailing list<br>
&gt; <a href="mailto:swift-evolution@swift.org">swift-evolution@swift.org</a><br>
&gt; <a href="https://lists.swift.org/mailman/listinfo/swift-evolution" rel="noreferrer" target="_blank">https://lists.swift.org/mailman/listinfo/swift-evolution</a><br>
_______________________________________________<br>
swift-evolution mailing list<br>
<a href="mailto:swift-evolution@swift.org">swift-evolution@swift.org</a><br>
<a href="https://lists.swift.org/mailman/listinfo/swift-evolution" rel="noreferrer" target="_blank">https://lists.swift.org/mailman/listinfo/swift-evolution</a><br>
</blockquote></div><br></div>
</div></blockquote></body></html>