Theo SE-0077, các ưu tiên của một nhà điều hành không còn được quyết định bởi một con số kỳ diệu - thay vì bây giờ bạn sử dụng higherThan
và (nếu nhóm nằm trong một mô-đun khác) lowerThan
precedencegroup
các mối quan hệ để xác định mức độ ưu tiên tương đối so với các nhóm khác.
Ví dụ (từ evolution proposal):
// 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
Mặc dù trong trường hợp của bạn, vì nó xuất hiện rằng nhà điều hành của bạn được sử dụng cho phép nhân, bạn có thể chỉ cần sử dụng MultiplicationPrecedence
nhóm các thư viện chuẩn, mà được sử dụng cho nhà điều hành *
:
infix operator × : MultiplicationPrecedence
Được định nghĩa là:
precedencegroup MultiplicationPrecedence {
associativity: left
higherThan: AdditionPrecedence
}
Để có danh sách đầy đủ các nhóm ưu tiên thư viện chuẩn, cũng như thông tin thêm về thay đổi này, hãy xem evolution proposal.
Mã táo thanh toán, có thể là điều này sẽ giúp: https://github.com/apple/swift/blob/3d005f3ad90f041325e7a28fd9d0544324ac24d6/test/Parse/operator_decl.swift –