var done: (NSError?, NSData, NSString?) -> () = { (_, _, _) -> () in }
не могли бы вы объяснить истинный смысл этой строки? Большое спасибо!
Ответ 1
_ означает не называть эту вещь. Его можно использовать в нескольких местах. В вашем случае это означает, что игнорировать переменную, передаваемую в закрытие. Код, который вы указали, игнорирует все параметры, но вы также можете просто игнорировать некоторые параметры.
in - начало реализации закрытия. В вашем примере кода реализация закрытия пуста.
В целом, эта строка определяет замыкание под названием "done", которое принимает необязательный NSError (NSError?), NSData (NSData) и необязательный NSString (NSString?) И ничего не возвращает (->()). Фактическая реализация закрытия ничего не делает.
Ответ 2
_ - имя параметра-заполнителя. Он указывает, что ожидается параметр, но не будет использоваться. in указывает конец подписи типа закрытия. Вся эта строка определяет функцию, которая принимает три параметра и ничего не делает.
Ответ 3
"_" используется, чтобы сделать что-то анонимным.
for (key, _) in dictionary{}
Здесь мы делаем ценность анонимной.
In используется для запуска замыкания или цикла, а также для коллекции, в которой применяется цикл.