Один из способов решить эту проблему - реализовать собственные пользовательские операторы. Вот простой пример, в котором я создал оператор **
, который используется для умножения, умножения на Int и Double и возврата Int
infix operator **: MultiplicationPrecedence
extension Int {
static func ** (left: Int, right: Double) -> Int {
Int(Double(left) * right)
}
static func ** (left: Double, right: Int) -> Int {
Int(Double(right) * left)
}
}
Пример
let x = 4 + 10 ** 4.5 - 3.4 ** 2 // x = 43
Подробнее см. Главу «Оператор» в Язык программирования Swift