Вывод типов в замыканиях
Изучите вывод типов параметров и возвращаемых значений в замыканиях.
«Вывод типов в замыканиях» — бесплатный урок Swift Academy на CoddyKit. Это урок 4 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Swift Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Swift Academy содержит 4 уроков всего.
Замыкания выводят типы
Во многих контекстах замыкание может вывести типы и параметров, и возвращаемого значения по способу использования.
let numbers = [1, 2, 3, 4]
let doubled = numbers.map { $0 * 2 }
print(doubled)Вывод типа параметра
Когда Вы передаёте замыкание в map, тип элемента сообщает Swift, что представляет собой $0, поэтому тип параметра можно не указывать.
let names = ["ada", "bob"]
let upper = names.map { $0.uppercased() }
print(upper)Вывод типа результата
Тело замыкания определяет тип возвращаемого значения. Возврат значения типа Bool делает замыкание предикатом.
let nums = [1, 2, 3, 4, 5]
let evens = nums.filter { $0 % 2 == 0 }
print(evens)Сокращённые имена аргументов
$0, $1 и последующие обозначения ссылаются на аргументы замыкания по их позиции, когда их типы выведены.
let sums = zip([1, 2, 3], [10, 20, 30]).map { $0 + $1 }
print(Array(sums))Явные параметры при необходимости
Вы по-прежнему можете называть параметры и явно указывать их типы, если это повышает ясность.
let nums = [3, 1, 2]
let sorted = nums.sorted { (a: Int, b: Int) -> Bool in
return a < b
}
print(sorted)Вывод из контекста
Если Вы присваиваете замыкание переменной с указанным типом, тип переменной сообщает замыканию его сигнатуру.
let add: (Int, Int) -> Int = { a, b in a + b }
print(add(2, 3))Замыкание в конце вызова
Синтаксис замыкания в конце вызова сохраняет возможность вывода типов и одновременно делает места вызова более читаемыми.
let result = [5, 3, 8, 1].sorted { $0 > $1 }
print(result)Вывод типов в reduce
В reduce типы аккумулятора и элемента выводятся из начального значения и последовательности.
let total = [1, 2, 3, 4].reduce(0) { acc, x in acc + x }
print(total)Возврат из замыкания
В замыканиях с одним выражением ключевое слово return можно не указывать: возвращается значение выражения, и его тип выводится автоматически.
let lengths = ["hi", "hello", "hey"].map { $0.count }
print(lengths)Переменная замыкания с указанным типом
Если замыкание сохраняется без немедленного вызова, укажите его тип, чтобы Swift мог вывести типы в теле.
let transform: (String) -> Int = { $0.count }
print(transform("swift"))Когда необходимо явно указать тип
Если окружающий контекст не предоставляет информации о типе, Swift не может вывести типы параметров замыкания, и Вам нужно указать их явно.
let isPositive: (Int) -> Bool = { n in n > 0 }
print(isPositive(5), isPositive(-3))Быстрая проверка
Проверьте вывод типов в замыканиях.
Итоги
Замыкания выводят типы параметров и возвращаемого значения из контекста, например map, filter или переменной с указанным типом. Используйте сокращённые обозначения $0/$1, когда типы выводятся автоматически, и указывайте типы явно, если контекст недоступен.
let f: (Int) -> Int = { $0 + 1 }
let xs = [1, 2, 3].map { $0 * 10 }
print(f(9), xs)Часто задаваемые вопросы
Урок «Вывод типов в замыканиях» бесплатный?
Да — полный текст урока «Вывод типов в замыканиях» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Swift Academy, подпишись на CoddyKit PRO. Курс Swift Academy содержит 4 уроков всего.
Чему я научусь в уроке «Вывод типов в замыканиях»?
Изучите вывод типов параметров и возвращаемых значений в замыканиях. Ты практикуешь Swift Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать Swift Academy?
Предыдущий опыт не требуется. Swift Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 4 из 4.
Сколько времени занимает урок «Вывод типов в замыканиях»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке Swift Academy?
Да. Каждый урок Swift Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Как работает вывод типов
- Когда добавлять явные аннотации
- Вывод типов для литералов
- Вывод типов в замыканиях