Անցնել պարունակությանը

Ֆունկցիաներ

Ֆունկցիաները ծրագրավորման մեջ հանդիսանում են հիմնական կառուցվածքային բլոկներ: Դրանք թույլ են տալիս կոդը ինկապսուլացնել օգտագործելի միավորների մեջ, դարձնելով ձեր ծրագրերը ավելի մոդուլային, ընթեռնելի և պահպանելի: Այս փաստաթուղթը ընդգրկում է ֆունկցիաների շարահյուսությունը, օգտագործումը և տարբեր հնարավորությունները Eiger-ում։

Ֆունկցիաների հայտարարում

Ֆունկցիա հայտարարելու համար օգտագործեք func բանալի բառը, որին հետևում է ֆունկցիայի անունը և կլոր փակագծերը: Ֆունկցիայի մարմինը փակելու համար օգտագործեք end։

Շարահյուսություն

func functionName(parameters)
    ~ ֆունկցիայի մարմին
end

Օրինակ

func greet(name)
    emitln("Բարև, " + name + "!")
end

Ֆունկցիայի պարամետրեր

Ֆունկցիաները կարող են ընդունել պարամետրեր, որոնք ներկայացնում են արժեքներ, փոխանցվող ֆունկցիայի մեջ: Պարամետրերը սահմանվում են կլոր փակագծերում ֆունկցիայի հայտարարության ժամանակ։

Շարահյուսություն

func functionName(param1, param2, ...)
    ~ ֆունկցիայի մարմին
end

Օրինակ

func printAge(name, age)
    emitln(name + "ը " + age + " տարեկան է")
end

Վերադարձվող արժեքներ

Ֆունկցիաները կարող են վերադարձնել արժեք ret օպերատորի միջոցով: Եթե վերադարձի օպերատորը նշված չէ, ֆունկցիան վերադարձնում է nix (այսինքն null C#-ում)։

Շարահյուսություն

func functionName(parameters)
    ret value
end

Օրինակ

func add(a, b)
    ret a + b
end

Տեսանելիություն

Ֆունկցիայի ներսում հայտարարված փոփոխականները տեղային են այդ ֆունկցիայի համար: Ֆունկցիաները կարող են նաև վերադարձնել ֆունկցիաներ, որոնք փակում և հիշում են այն միջավայրը, որտեղ ստեղծվել են։

func createCounter()
    let count = 0

    ret func()
        count += 1
        ret count
    end
end

counter = createCounter()

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

Բարձրակարգ ֆունկցիաներ

Բարձրակարգ ֆունկցիաները այն ֆունկցիաներն են, որոնք ընդունում են այլ ֆունկցիաներ որպես արգումենտներ կամ վերադարձնում են դրանք որպես արդյունքներ: Դրանք հանդիսանում են ֆունկցիոնալ ծրագրավորման հիմնական հատկություններից մեկը։

func applyFunction(fn, value)
    ret fn(value)
end

func cube(x)
    ret x ^ 3
end

emitln(applyFunction(cube, 3)) ~ 27