что означают слова "_" и "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 используется для запуска замыкания или цикла, а также для коллекции, в которой применяется цикл.