Функции и замыкания (closures)

Используйте func для объявления функции. Функция вызывается по ее имени и списку параметров в скобках. Используйте -> для отделения имен параметров и типов от возвращаемого значения функции:

Удалите параметр day. Добавьте параметр для включения сегодняшнего особого блюда в приветствие.

Используйте кортеж (tuple) для возврата нескольких значений из функции. Элементы набора могут быть отнесены либо по имени или по номеру.

Функции могут использовать разное число аргументов, собирая их в массив:

Напишите функцию, которая считает среднее значение для ее аргументов

Функции могут быть вложенными. Вложенные функции имеют доступ к переменным, объявленным во внешнем функции. Используйте вложенные функции для организации кода длинной и сложной функции.

Функции по своей сути являются типом — то есть вы можете возвращать функцию из функции:

Функция может принимать другую функцию, как ее аргумент:

Функции — это на самом деле специальный случай замыканий. Вы можете написать замыкание без имени, окружив код фигурными скобками. Используйте in для разделения аргументов и типа возвращаемого значения от тела замыкания:

Перепишите замыкание так, чтобы оно возвращало 0 для всех нечетных номеров

У вас есть несколько опций для написания замыканий более кратко. Когда тип замыкания уже известен, например обратный вызов делегата (callback), вы можете пропустить тип его параметров, тип возвращаемого значения или и то и другое. Однострочное замыкание в примере ниже возвращает значение своего единственного выражения:

 

Вы можете ссылаться на параметры по номеру, вместо его имени — этот подход особенно удобен в очень коротких замыканиях.Замыкание, переданное как последний аргумент для функции, может появляться сразу после скобок:


Просмотренно: 2 814 раз