Rustove funkcije imajo številne nianse, ki se razlikujejo od drugih jezikov. Tukaj izveste vse o njihovi sintaksi.

Funkcije so bistveni programski konstrukti, saj postavljajo temelje za ponovno uporabnost kode in olajšajo modularno programiranje. Funkcije so samostojni bloki kode, ki izvajajo določene naloge. Lahko prejmejo vhodne podatke v obliki argumentov in vrnejo vrednost.

Rust ponuja funkcije za organizacijo kode, enkapsulacijo in ponovno uporabnost kode.

Definiranje funkcij v Rust

Funkcije rje so podobne funkcije v katerem koli drugem programskem jeziku, čeprav obstajajo majhne razlike, ki jih boste morali razumeti.

Funkcije za svoje programe Rust boste definirali z fn ključna beseda, ki ji sledijo ime funkcije, neobvezni argumenti in neobvezen povratek tip podatkov.

// funkcija, ki niti ne sprejme argumentov niti ne vrne vrednosti
fn ime_funkcije() {
// telo funkcije tukaj
}

Tukaj je preprosta funkcija Rust, ki ne sprejme nobenih argumentov ali vrne vrednosti.

fn a_function(){
naj x = 3;
println!("{}", x)
}

a_funkcija je preprosta funkcija Rust, ki natisne spremenljivko x.

Podpisi funkcij Rust

Funkcijski podpisi so način poimenovanja funkcij ter opisovanja njihovih argumentov in vrnjenih vrst, ne da bi vključili telo funkcije. Podpisi funkcij so uporabni za dokumentiranje API-jev knjižnic Rust.

Tukaj je primer podpisa funkcije Rust:

ime fn()

fn pozdrav (ime: &str)

The ime funkcija je minimalen funkcijski podpis, medtem ko je pozdraviti podpis določa, da funkcija sprejme en argument, ime, vrste niz (&str).

Deklaracija funkcij z argumenti in vrnjenimi vrednostmi

Funkcije Rust lahko sprejmejo veliko argumentov, omejitev pa ni izrecno definirana. Funkcije z argumenti so na splošno bolj prilagodljive, saj lahko sprejemajo vrednosti iz drugih funkcij in delov kode.

Tukaj je tipičen model funkcije Rust, ki sprejema argumente:

fn ime_funkcije (arg: vrsta, arg2: vrsta) {
// telo funkcije tukaj
}

Vrsta argumenta funkcije je lahko vgrajena vrsta Rust ali vrsta po meri iz vašega programa.

Tukaj je primer preproste funkcije, ki kot argumenta sprejme dve celi števili:

fn add_numbers (x: i32, y: i32) {
println!("{}", x + y);
}

The dodaj_števila funkcija sprejme dve 32-bitni celi števili in natisne vsoto celih števil.

Funkcije Rust lahko vrnejo več vrednosti; podati boste morali povratni tip(-e) in vrniti vrednosti tipa iz funkcije.

fn ime_funkcije (arg: vrsta, arg2: vrsta) -> (vrsta, vrsta) {
// telo funkcije tukaj
vrnitev arg, arg2
}

Tukaj je funkcija, ki sprejme niz in 32-bitno celo število kot argument ter vrne argumente kot torko.

fn string_and_integer (s: String, n: i32) -> (String, i32) {
vrnitev (s, n);
}

The niz_in_celo število funkcija sprejme niz in 32-bitno celo število ter ju vrne kot torko. Iz funkcije Rust lahko vrnete samo eno vrednost.

Lahko izpustite vrnitev pri vrnitvi končnega izraza iz funkcije, da bo koda bolj jedrnata.

fn string_and_integer (s: String, n: i32) -> (String, i32) {
vrnitev (s, n);
}

// funkciji sta enakovredni

fn str_and_int (s: niz, n: i32) -> (niz, i32) {
(s, n)
}

Ti dve funkciji se obnašata enako, saj obe sprejmeta niz in celo število ter te argumente vrneta kot torko.

Klicanje funkcij Rust

Eno funkcijo lahko pokličete iz druge tako, da zapišete njeno ime, ki mu sledijo vrednosti, ki ji jih želite posredovati v oklepajih:

fn add_numbers (x: i32, y: i32) -> i32 {
x + y
}

fn main() {
pusti rezultat = dodaj_števila(3, 5);
println!("Rezultat je {}", rezultat); // Izhod: rezultat je 8
}

The glavni funkcijske klice dodaj_števila, ki mu posreduje dve celi števili. Rezultat funkcije dodeli spremenljivki, rezultat.

Lahko deklarirate funkcije za Rust Structs

Funkcije lahko deklarirate znotraj struktur Rust. To postanejo metode za strukturo, ki lahko do nje dostopa in jo spreminja.

Rust ni zgolj objektno usmerjen, vendar ponuja strukture za združevanje povezanih podatkov. Lahko si prizadevate za implementacijo OOP konceptov v Rust z uporabo struktur z metodami.