0Pricing
Swift Academy · Урок

Вывод типов в замыканиях

Изучите вывод типов параметров и возвращаемых значений в замыканиях.

«Вывод типов в замыканиях» — бесплатный урок 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 — локальная установка не требуется.

Все уроки этого курса

  1. Как работает вывод типов
  2. Когда добавлять явные аннотации
  3. Вывод типов для литералов
  4. Вывод типов в замыканиях
← Назад к Swift Academy