Пользовательские функции

Итак, вы познакомились с встроенными функциями. Но иногда даже их возможностей не хватает, приходится своздавать свои небольшие алгоритмы. Как же их создать?

Объявление начала записи функции начинается с ключевого слова функция. Далее идёт имя функции, после - её тип. У типов функции такой же принцип, как и у переменных - если тип не объявлять, то функция будет имять тип любое. Далее, в груглых скобках, идут аргументы функции, их может быть бесконечное количество, а может и не быть вовсе. Аргументы считаются локальными переменными относительной этой функции и также имею свой тип (прицип типов переменных сохраняется). В фигурных скобках идёт сам блок нашего алгоритма.

Чтобы вернуть значение из функции - используем ключевое слово вернуть. Если у функции указан явно тип, то она обязана возвращать значение такого типа. Исключениями являются типы ничего и любой - они могут не иметь ключевого слова вернуть, потому что если функция ничего не вернёт явно, то она возвращает тип пустой - технический тип, который при явном использовании перетекает в тип ничего (см. последовательная типизация). Тогда функция на этапе использования будет иметь тип ничего, что и является её настоящим типом. И тип любой может принять такие данные.

Таким образом мы можем создать пользовательскую функцию, которую мы можем абсолютно так же, как и встроенную, вызвать и передать в неё аругменты. Например, наша самописная функция суммаДвух при аргументах 2 и 5 вернёт 7.

Функция - это такой же алгоритм, что и ваша основная рабочая область - то место, где вы пишите вообще весь код. Поэтому вы можете использовать любой синтаксис в функциях, что доступен в языке.

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

Самописные модули

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

Пример модуля:

Вызов функции из модуля:

Лямбда-функции

Лямбда-функции - это более короткий синтаксис функций, предназначенный для написания функций с 1 аргументом, над которым произведутся вычисления. В RuSL это вычисление записывается в 1 команду (т.е. пока не встретится точка с запятой).

Пример лямбда-функции:

Как можно заметить, сначала идет ключевое слово лямбда, затем - объяление типа (необязательно), потом, при помощи оператора >> идёт выражение, заканчивающееся точкой с запятой. После точки с запятой (любой вложенности, то есть вложенности, т.е. условия, циклы и тд. в лямбдах недопустимы) начинается новая команда.