Допустим, у меня есть массив функций (закрытий), которые я позже захочу отправить. Я хочу, чтобы все блокировки принимали Array любого типа в качестве единственного параметра.Сохранение замыканий различных типов в массиве в Swift
Я пробовал:
var closureList: [(Array) -> Void]
Это дает ошибку при компиляции: ссылка на общий тип «Массив» требует аргументов в < ...>
Я не хочу, чтобы сохранить закрытие определенного тип массива, но любого типа массива, поэтому я попытался это:
protocol GeneralArray {
}
extension Array: GeneralArray {
}
var closureList: [(GeneralArray) -> Void]
компилируется, но когда я пытаюсь добавить замыкание:
func intArrayFunc([Int]) -> Void {
}
closureList.append(intArrayFunc)
Я получаю ошибку компилятора: не могу вызвать 'append' с помощью списка аргументов типа '(([Int]) -> Void)'.
Есть ли способ быстро закрыть хранилища, которые принимают разные типы в качестве параметров в массиве?
дженерики. (GeneralArray) -> Пустота ожидается, и вы проходите (Int) -> Void. Попробуйте func intArrayFunc ([GeneralArray]) -> Пустота. Проверьте это http://stackoverflow.com/questions/29829763/how-to-define-array-of-closures-in-swift – jarryd