Я Javascripter, и я люблю использовать функцию not/negate
:
function not (predicateFunc) {
return function () {
return !predicateFunc.apply(this, arguments);
};
}
Я пытаюсь сделать то же самое с swift:
func not <A> (_ f: @escaping (_ A: Any) -> Bool) -> (A) -> Bool {
return { a in !f(a) }
}
Но я получаюошибки типа
generic parameter 'T' could not be inferred
и
Cannot convert value of type '(_) -> Bool' to expected argument type '(Any) -> Bool'
Результат, который я ищу, - это когда у меня есть такая функция:
func isEmpty<T: Collection>(collection: T) -> Bool {
return collection.count == 0
}
Я могу просто создатьnotEmpty
функция выглядит следующим образом:
let notEmpty = not(isEmpty)
А затем используйте ее как
notEmpty([3,4,5]) // true
Что я делаю не так?