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
}
}
