Swift ругается на операцию деления в Numeric

Задача создать универсальную функцию по операциям с числами типа Int и Double. Делаю вот таким образом, но на операцию деления получаю ошибку.

Может есть другие способы?

func operation<T:Numeric>(_ op: String, leftValue: T, rightValue: T) -> T {
        switch op {
            case "+": return leftValue + rightValue
            case "-": return leftValue - rightValue
            case "*": return leftValue * rightValue
            case "/": return leftValue / rightValue
        default:
            return 0
        }
}

введите сюда описание изображения


Ответы (1 шт):

Автор решения: schmidt9

Вы можете для Int сделать отдельную реализацию. При этом числа всех других типов будут использовать реализацию для FloatingPoint, в том числе и если передать для leftValue и rightValue числа разных типов

func operation<T:FloatingPoint>(_ op: String, leftValue: T, rightValue: T) -> T {
    switch op {
    case "+": return leftValue + rightValue
    case "-": return leftValue - rightValue
    case "*": return leftValue * rightValue
    case "/": return leftValue / rightValue
    default:
        return 0
    }
}

func operation<T:SignedInteger>(_ op: String, leftValue: T, rightValue: T) -> T {
    switch op {
    case "+": return leftValue + rightValue
    case "-": return leftValue - rightValue
    case "*": return leftValue * rightValue
    case "/": return leftValue / rightValue
    default:
        return 0
    }
}
→ Ссылка