Ответ 1
В соответствии с SE-0077 приоритет оператора больше не определяется магическим числом - вместо этого вы теперь используете higherThan
и (если группа находится в другом модуле) lowerThan
precedencegroup
отношения для определения приоритета относительно других групп.
Например (из предложение об эволюции):
// module Swift precedencegroup Additive { higherThan: Range } precedencegroup Multiplicative { higherThan: Additive } // module A precedencegroup Equivalence { higherThan: Comparative lowerThan: Additive // possible, because Additive lies in another module } infix operator ~ : Equivalence 1 + 2 ~ 3 // same as (1 + 2) ~ 3, because Additive > Equivalence 1 * 2 ~ 3 // same as (1 * 2) ~ 3, because Multiplicative > Additive > Equivalence 1 < 2 ~ 3 // same as 1 < (2 ~ 3), because Equivalence > Comparative 1 += 2 ~ 3 // same as 1 += (2 ~ 3), because Equivalence > Comparative > Assignment 1 ... 2 ~ 3 // error, because Range and Equivalence are unrelated
Хотя в вашем случае, как кажется, ваш оператор используется для умножения, вы можете просто использовать стандартную библиотеку MultiplicationPrecedence
, которая используется для оператора *
:
infix operator × : MultiplicationPrecedence
Он определяется как:
precedencegroup MultiplicationPrecedence {
associativity: left
higherThan: AdditionPrecedence
}
Полный список стандартных групп приоритетов библиотеки, а также дополнительная информация об этом изменении см. в эволюционном предложении.