Перейти к содержанию

Функции

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

Объявление функций

Для объявления функции используйте ключевое слово func, за которым следует имя функции и круглые скобки. Чтобы закрыть тело функции, используйте end.

Синтаксис

func functionName(parameters) {
    ~ тело функции
}

Пример

func greet(name) {
    emitln("Привет, " + name + "!")
}

Параметры функции

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

Синтаксис

func functionName(param1, param2, ...) {
    ~ тело функции
}

Пример

func printAge(name, age) {
    emitln(name + " " + age + " лет")
}

Возвращаемые значения

Функции могут возвращать значение с помощью оператора ret. Если оператор возврата не указан, функция возвращает nix (то есть null в C#).

Синтаксис

func functionName(parameters) {
    ret value
}

Пример

func add(a, b) {
    ret a + b
}

Область видимости и замыкания

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

func createCounter() {
    let count = 0

    ret func() {
        count += 1
        ret count
    }
}

counter = createCounter()

emitln(counter()) ~ 1
emitln(counter()) ~ 2
emitln(counter()) ~ 3

Функции высшего порядка

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

func applyFunction(fn, value) {
    ret fn(value)
}

func cube(x) {
    ret x ^ 3
}

emitln(applyFunction(cube, 3)) ~ 27