Я новичок в Swift, и я хочу написать общую функцию c max, которая сравнивает два параметра и возвращает больший для базовых типов c, таких как Int, Double, et c.
func max<T>(_ num1:T, _ num2:T) -> T {
return (num1 > num2) ? num1 : num2;
}
Но я обнаружил, что это не работает, сообщил, что двоичная операция '>' не может применяться к двум операндам 'T'.
Я видел пример с generi c add function Здесь
protocol Summable { static func +(lhs: Self, rhs: Self) -> Self }
extension Int: Summable {}
extension Double: Summable {}
func add<T: Summable>(x: T, y: T) -> T {
return x + y
}
Так что я думаю, что у меня тоже должен быть протокол для моей функции max
. Итак, это моя попытка:
protocol Comparable {
static func >(lhs: Self, rhs: Self) -> Self
}
extension Int:Comparable {}
extension Double:Comparable {}
Но это не работает. Я знаю, что Swift предоставляет протокол Comparable
, но я хочу попробовать его сам. Не могли бы вы помочь?