У меня есть протокол FnProtocol
, которому String
и Int
соответствуют.
protocol FnProtocol {
}
extension Int: FnProtocol {
}
extension String: FnProtocol {
}
Затем я создал функцию f3
, которая принимает FnProtocol
в качестве аргумента.
func f3(_ x: FnProtocol) -> FnProtocol {
return x
}
Затем функция comp
принимает массив функций, работающих на FnProtocol
.
func comp(fns: [(FnProtocol) -> FnProtocol]) -> (FnProtocol) -> FnProtocol {
return fns[0]
}
func count(_ s: String) -> Int {
return s.count
}
Учитывая, что String
и Int
соответствует FnProtocol
, почему comp(fns: [count])
терпит неудачу, но comp(fns: [f3])
работает?
comp(fns: [count]) // Cannot convert value of type '(String) -> Int' to expected element type '(FnProtocol) -> FnProtocol'
Как заставить это работать с count
?