In Swift 2 I had defined operators for Set<Int> as follow, for union of sets :
infix operator + { associativity left precedence 140 }
func + (s1: Set<Int>, s2: Set<Int>) -> Set<Int> {
return s1.union(s2)
}
infix operator - { associativity left precedence 140 } /
func - (s1: Set<Int>, s2: Set<Int>) -> Set<Int> {
return s1.subtract(s2)
}
This is no more accepted in Swift 3 which requires to create precedencegroup.
So, I did the following :
precedencegroup MinusPrecedence { // 23.12.2016
associativity: left
higherThan: AssignmentPrecedence // predefini
}
precedencegroup PlusPrecedence {
associativity: left
higherThan: MinusPrecedence
}
infix operator + : PlusPrecedence // { associativity left precedence 140 }
func +(s1: Set<Int>, s2: Set<Int>) -> Set<Int> {
return s1.union(s2)
}
infix operator - : MinusPrecedence // { associativity left precedence 140 } // 8.5.2016
func -(s1: Set<Int>, s2: Set<Int>) -> Set<Int> {
return s1.subtracting(s2)
}
But it seems to have some side effect, because it seems to set precedence for any use of + or -, not only for sets
For instance, when using ternary operator, I get the following message :
Adjacent operators are in unordered precedence groups 'TernaryPrecedence' and 'MinusPrecedence'
Did I write something wrong ? Or must I define how plus and minus precede vs ternary and other operators ?