Что такое функция в Swift?

«Что такое функция в Swift?» — вопрос из категории Swift Core, который задают на 10% собеседований IOS Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Функция в Swift — это самодостаточный блок кода, выполняющий конкретную задачу. Она объявляется ключевым словом func, может принимать входные параметры, выполнять операции и возвращать результат.

Базовый синтаксис:

func имяФункции(параметр1: Тип, параметр2: Тип) -> ВозвращаемыйТип {
    // Тело функции
    return значение
}

Расширенный пример с ключевыми возможностями Swift:

// Функция с внешним/внутренним именами, значением по умолчанию и меткой опускания
func calculateArea(for width: Double, and height: Double = 10.0) -> Double {
    return width * height
}

let area1 = calculateArea(for: 5.0, and: 8.0) // 40.0
let area2 = calculateArea(for: 5.0)           // 50.0 (height = 10.0 по умолчанию)

// Функция, возвращающая кортеж (множество значений)
func minMax(of array: [Int]) -> (min: Int, max: Int)? {
    guard !array.isEmpty else { return nil }
    return (array.min()!, array.max()!)
}

// Функция как объект первого класса (first-class citizen)
let operation: (Double, Double) -> Double = calculateArea
let result = operation(3.0, 4.0) // 12.0

Важные особенности функций в Swift:

  • Параметры: Могут иметь как внутренние (для использования в теле), так и внешние (для вызова) имена. Используется _ для опускания внешнего имени.
  • Возвращаемое значение: Может отсутствовать (-> Void), быть одним значением, кортежем или опциональным типом.
  • Функции как типы: Функции можно присваивать переменным, передавать как аргументы в другие функции (колбеки) и возвращать из функций (замыкания высшего порядка).
  • Способы передачи параметров:
    • inout — для сквозных параметров, изменяющих переданную переменную.
    • По умолчанию — все параметры являются константами (let). Для изменения создается локальная копия.