Однострочные функции
Однострочные функции (single expression function) используют сокращенный синтаксис определения функции в виде одного выражения. Эта форма позволяет опустить возвращаемый тип и оператор return.
fun имя_функции (параметры_функции) = тело_функции
Функция также определяется с помощью ключевого слова fun, после которого идет имя функции и список параметров. Но после списка параметров не указывается возвращаемый тип. Возвращаемый тип будет выводится компилятором.
Далее через оператор присвоения = определяется тело функции в виде одного выражения.
Например, функция возведения числа в квадрат:
В данном случае функция double возводит число в квадрат. Она состоит из одного выражения x * x. Значение этого выражения и будет возвращаться функцией. При этом оператор return не используется.
Такие функции более лаконичны, более читабельны, но также опционально можно и указывать возвращаемый тип явно:
Локальные функции
Одни функции могут быть определены внутри других функций. Внутренние или вложенные функции еще называют локальными.
Локальные функции могут определять действия, которые используются только в рамках какой-то конкретной функции и нигде больше не применяются.
Например, функция принимает на вход основание и высоту двух треугольников и должна вычислить, больше ли площадь первого треугольника, чем второго:
Для промежуточных вычислений - вычисления площади каждого отдельного треугольника в функции isFirstGreater определена вспомогательная функция square. Больше в программе эта функция нигде не используется, поэтому ее можно сделать локальной.
При этом локальная может использоваться только в той функции, где она определена.