Функция — фрагмент кода, который вызывается из других мест программы.
Другими словами — это подпрограмма, которую можно вызывать из других частей программы, причём неограниченное количество раз.
Функции используются, чтобы избегать избыточности и дублирования кода и чтобы структурировать и декомпозировать программу.
Сигнатура функции — набор элементов, однозначно описывающих функцию: название, параметры (их количество и типы), возвращаемое значение функции.
Основные принципы прописывания функций.
- Функции должны быть максимально обособлены и независимы друг от друга.
- Функции не должны влиять друг на друга или какие-то общие данные. Вызываемая функция лишь предоставляет результат вычислений, а обрабатывает его вызывающая функция.
- Функция решает свою атомарную задачу. Её, в свою очередь, определяет разработчик.
- Более сложные задачи решаются с помощью компоновки различных функций.
Тип Unit — описывает отсутствие возвращаемого значения функции.
При объявлении функции без возвращаемого значения он автоматически вставляется компилятором, вручную его указывать не нужно. Тип Unit необходим при работе с функциональными типами.
Функциональный тип — особый тип, который позволяет работать с лямбда-выражениями и функциями высшего порядка.
Описывает сигнатуру используемой функции и лямбда-выражения.
Функции высшего порядка — функции, которые могут принимать в качестве аргумента другие функции и лямбда-выражения, а также использовать их в качестве возвращаемого значения.
Анонимная функция — функция, у которой нет имени.
Обращение к этой функции происходит с помощью переменной функционального типа.
Аргумент — значение, передаваемое функции, её символьное имя.
Лямбда-выражение — сокращённая запись функции; фактически функция, у которой нет имени.
Лямбда-выражения заключаются в фигурные скобки