Рустове функције имају много нијанси које се разликују од других језика. Сазнајте све о њиховој синтакси овде.

Функције су суштинске програмске конструкције јер постављају основу за поновну употребу кода и олакшавају модуларно програмирање. Функције су самостални блокови кода који обављају одређене задатке. Они могу да примају улаз, у облику аргумената, и враћају вредност.

Руст пружа функције за организацију кода, инкапсулацију и поновну употребу кода.

Дефинисање функција у Русту

Руст функције су сличне функционише у било ком другом програмском језику, иако постоје мале разлике које ћете морати да разумете.

Функције за своје Руст програме ћете дефинисати помоћу фн кључна реч праћена именом функције, опционим аргументима и опционим повратком тип података.

// функција која нити узима аргументе нити враћа вредност
фн име_функције() {
// тело функције овде
}

Ево једноставне Руст функције која не узима никакве аргументе нити враћа никакве вредности.

фн а_фунцтион(){
нека је к = 3;
принтлн!("{}", Икс)
}

а_фунцтион је једноставна Руст функција која штампа променљиву Икс.

Сигнатуре функције Руст

Сигнатуре функције су начин именовања функција и описивања њихових аргумената и типова повратка, без укључивања тела функције. Потписи функција су корисни за документовање АПИ-ја Руст библиотека.

Ево примера потписа функције Руст:

фн име()

фн поздрав (име: &стр)

Тхе име функција је минимални потпис функције, док је поздравити потпис специфицира да функција узима један аргумент, име, стринг типа (&стр).

Декларисање функција са аргументима и повратним вредностима

Руст функције могу да приме многе аргументе, а ограничење није експлицитно дефинисано. Функције са аргументима су генерално флексибилније јер могу да преузимају вредности из других функција и делова кода.

Ево типичног модела Руст функције који узима аргументе:

фн име_функције (арг: тип, арг2: тип) {
// тело функције овде
}

Тип аргумента функције може бити Руст уграђени тип или прилагођени тип из вашег програма.

Ево примера једноставне функције која узима два цела броја као аргументе:

фн адд_нумберс (к: и32, и: и32) {
принтлн!("{}", к + и);
}

Тхе адд_нумберс функција узима два 32-битна цела броја и исписује збир целих бројева.

Руст функције могу вратити више вредности; мораћете да наведете тип(ове) повратка и вратите вредности типа из функције.

фн име_функције (арг: тип, арг2: тип) -> (тип, тип) {
// тело функције овде
повратак арг, арг2
}

Ево функције која узима стринг и 32-битни цео број као аргумент и враћа аргументе као тупле.

фн стринг_анд_интегер (с: Стринг, н: и32) -> (Стринг, и32) {
повратак (с, н);
}

Тхе стринг_анд_интегер функција узима стринг и 32-битни цео број, враћајући их као тупле. Можете вратити само једну вредност из Руст функције.

Можете изоставити повратак кључну реч приликом враћања коначног израза из функције, да би код био сажетији.

фн стринг_анд_интегер (с: Стринг, н: и32) -> (Стринг, и32) {
повратак (с, н);
}

// функције су еквивалентне

фн стр_анд_инт (с: Стринг, н: и32) -> (Стринг, и32) {
(с, н)
}

Ове две функције имају исто понашање пошто обе узимају стринг и цео број и враћају те аргументе као тупле.

Позивање Руст функција

Можете позвати једну функцију из друге тако што ћете написати њено име праћено вредностима које желите да јој проследите унутар заграда:

фн адд_нумберс (к: и32, и: и32) -> и32 {
к + и
}

фн маин() {
нека резултат = адд_нумберс(3, 5);
принтлн!(„Резултат је {}“, резултат); // Излаз: Резултат је 8
}

Тхе главни позиви функција адд_нумберс, преносећи му два цела броја. Додељује резултат функције променљивој, резултат.

Можете декларисати функције за Руст структуре

Можете декларисати функције унутар Руст структура. Они постају методе за структуру која јој може приступити и модификовати.

Руст није искључиво објектно оријентисан, али обезбеђује структуре за груписање података у вези. Можете радити на имплементацији ООП концепата у Руст користећи структуре са методама.