Если мы возьмем части этого кода, один за другим:
let wordFreqs = [("k", 5), ("a", 7), ("b", 3)]
Вы начинаете с массивом кортежей ,
Из Свифт документации:
Тип кортеж является разделенный запятыми список типов в круглых скобках.
и:
группы Кортежи несколько значений в одно значение соединения. Значения в кортеже могут быть любого типа.
В этом случае кортежи являются «парами» из двух значений, одного из типов String и 1 типа Int.
let res = wordFreqs.filter(
{
(e) -> Bool in
Эта часть применяет фильтр на массиве. Вы можете видеть здесь, что закрытие фильтра принимает элемент e (так, в нашем случае, один кортеж) и возвращает Bool. С помощью функции «фильтр» возвращение true означает сохранение значения, а возврат false означает его фильтрацию.
if e.1 > 3 {
return true
} else {
return false
}
e.1
синтаксис возвращает значение кортежа по индексу 1. Таким образом, если значение кортежа с индексом 1 (второй) составляет более 3, фильтр возвращает истину (так кортеж будут сохранены); если нет, фильтр возвращает false (и, следовательно, исключает кортеж из результата). В тот момент, результат фильтра будет [("k", 5), ("a", 7)]
}).map { $0.0 }
Функция карты создает новый массив на основе массива кортежа: для каждого элемента входного массива ($ 0), она возвращает значение кортежа индекс 0. Таким образом, новый массив ["k", "a"]
print(res)
Это выводит результат на консоль.
Эти функции (фильтр, карта, сокращение и т. Д.) Очень распространены в функциональном программировании. Они часто связаны цепью с использованием точечного синтаксиса, например [1, 2, 3].filter({ }).map({ }).reduce({ })
Простой, сначала ваш массив был отфильтрован _ (по значению> 3) _, а затем отображен _ (для ключа) _, вы можете узнать больше о Swift язык из книги Apple. – holex
Если у кого-то есть проблема с моим вопросом. Пожалуйста, дайте комментарий, а не только отрицательную оценку. – Amanpreet
Я бы подумал, что это простой вопрос, потому что это очень простой вопрос, на который можно ответить, читая первые несколько страниц бесплатной книги Swift, выпущенной Apple. Задавая этот вопрос, здесь возникает недостаток усилий, направленных на понимание кода перед тем, как его спросить. (Не мое голосование, хотя. Просто, чтобы быть ясным.) – Fogmeister