У меня есть два объявления typealias
typealias QueryClosure = ((UInt?,UInt?)->([URLQueryItem])?)?
typealias SearchClosure = ((String?,UInt?)->([URLQueryItem])?)?
И я создал закрытие для этих
var queryFunc: (QueryClosure)? = ( {a,b in
return [URLQueryItem(name: "limit", value: "\(a ?? defaultPageSize)"), URLQueryItem(name: "offset", value: "\( (b ?? defaultPageIndex) * (a ?? defaultPageSize) )")]
})
var searchFunc: (SearchClosure)? = ( {query,b in
return [URLQueryItem(name: "q", value: query), URLQueryItem(name: "page", value: "\(b ?? defaultPageIndex)")]
}
)
Теперь я не хочу передавать ни запрос, ни поисковое закрытие, я хочучтобы пройти общее закрытие.
Итак, я создал новый typealias
typealias VariableClosure = ((Any?, Any?)->([URLQueryItem]))?
Но я не могу преобразовать в этот тип
let search : (VariableClosure) = ( {query,b in
return [URLQueryItem(name: "q", value: query), URLQueryItem(name: "page", value: "\(b ?? defaultPageIndex)")]
}
)
Это дает мнеошибка в том, что
Cannot convert value of type '(String?, _) -> [URLQueryItem]' to specified type 'VariableClosure' (aka 'Optional<(Optional<Any>, Optional<Any>) -> Array<URLQueryItem>>')
Как я могу создать замыкание (или лучше два), которое соответствует переменной переменная typealias, или каким-либо другим способом иметь своего рода общие typealias, которым я могу передать свои замыкания.