что означают слова "_" и "in" в языке Swift?

Я нашел код, написанный в Swift на github,

И немного запутаться в этой строке

var done: (NSError?, NSData, NSString?) -> () = { (_, _, _) -> () in }

не могли бы вы объяснить истинный смысл этой строки? Большое спасибо!

Ответ 1

_ означает не называть эту вещь. Его можно использовать в нескольких местах. В вашем случае это означает, что игнорировать переменную, передаваемую в закрытие. Код, который вы указали, игнорирует все параметры, но вы также можете просто игнорировать некоторые параметры.

in - начало реализации закрытия. В вашем примере кода реализация закрытия пуста.

В целом, эта строка определяет замыкание под названием "done", которое принимает необязательный NSError (NSError?), NSData (NSData) и необязательный NSString (NSString?) И ничего не возвращает (->()). Фактическая реализация закрытия ничего не делает.

Ответ 2

_ - имя параметра-заполнителя. Он указывает, что ожидается параметр, но не будет использоваться. in указывает конец подписи типа закрытия. Вся эта строка определяет функцию, которая принимает три параметра и ничего не делает.

Ответ 3

"_" используется, чтобы сделать что-то анонимным.

for (key, _) in dictionary{}

Здесь мы делаем ценность анонимной.

In используется для запуска замыкания или цикла, а также для коллекции, в которой применяется цикл.