[swift-users] Changing precedence of / operator for my protocol?
gparker at apple.com
Tue Nov 29 16:28:25 CST 2016
> On Nov 29, 2016, at 2:55 AM, Rick Mann via swift-users <swift-users at swift.org> wrote:
> Working on dimensional analysis, I have some proof-of-concept code that seems to be working:
> let n1 = kilogram * meter / second * second
> ([(kg⋅m) / s]⋅s)
> let n2 = kilogram * meter / (second * second)
> [(kg⋅m) / (s⋅s)]
> Note: () around unit products,  around unit quotients.
> I'd like to adjust the precedence of operator * for my Unit protocol to be higher than /. Is that possible? It wasn't at all clear to me how to do that in Swift 3, or if can even be done at all.
You can't. A Swift operator's precedence is the same for all types that implement that operator. Operators * and / cannot use the same precedence on Int but different precedence on Unit.
You could try to change the precedence of * and / globally - they're defined like any other operator in stdlib/public/core/Policy.swift - but you'll break lots of other code that way.
Greg Parker gparker at apple.com Runtime Wrangler
More information about the swift-users