Rustove funkcije imaju mnogo nijansi koje se razlikuju od drugih jezika. Ovdje saznajte sve o njihovoj sintaksi.
Funkcije su bitne programske konstrukcije budući da postavljaju temelj za ponovnu upotrebu koda i olakšavaju modularno programiranje. Funkcije su samostalni blokovi koda koji obavljaju određene zadatke. Mogu primiti input u obliku argumenata i vratiti vrijednost.
Rust pruža funkcije za organizaciju koda, enkapsulaciju i mogućnost ponovne upotrebe koda.
Definiranje funkcija u Rustu
Funkcije hrđe su slične funkcije u bilo kojem drugom programskom jeziku, iako postoje male razlike koje ćete morati razumjeti.
Funkcije za svoje Rust programe definirat ćete pomoću fn ključna riječ iza koje slijedi naziv funkcije, izborni argumenti i izborni povrat tip podataka.
// funkcija koja niti prima argumente niti vraća vrijednost
fn naziv_funkcije() {
// tijelo funkcije ovdje
}
Evo jednostavne Rust funkcije koja ne prima nikakve argumente niti vraća bilo kakve vrijednosti.
fn a_function(){
neka je x = 3;
println!("{}", x)
}
a_funkcija je jednostavna Rust funkcija koja ispisuje varijablu x.
Signature funkcije Rust
Funkcijski potpisi način su imenovanja funkcija i opisa njihovih argumenata i tipova povrata, bez uključivanja tijela funkcije. Funkcijski potpisi korisni su za dokumentiranje API-ja Rust biblioteka.
Evo primjera potpisa funkcije Rust:
fn ime()
fn pozdrav (ime: &str)
The Ime funkcija je minimalni potpis funkcije, dok je pozdraviti potpis navodi da funkcija uzima jedan argument, Ime, tipa niz (&str).
Deklariranje funkcija s argumentima i povratnim vrijednostima
Rust funkcije mogu primiti mnogo argumenata, a ograničenje nije eksplicitno definirano. Funkcije s argumentima općenito su fleksibilnije budući da mogu preuzimati vrijednosti iz drugih funkcija i dijelova koda.
Evo tipičnog modela Rust funkcije koja prima argumente:
fn naziv_funkcije (arg: tip, arg2: tip) {
// tijelo funkcije ovdje
}
Vrsta argumenta funkcije može biti vrsta ugrađena u Rust ili prilagođena vrsta iz vašeg programa.
Evo primjera jednostavne funkcije koja uzima dva cijela broja kao argumente:
fn add_numbers (x: i32, y: i32) {
println!("{}", x + y);
}
The zbroj_brojeva funkcija uzima dva 32-bitna cijela broja i ispisuje zbroj cijelih brojeva.
Rust funkcije mogu vratiti više vrijednosti; morat ćete navesti tip(ove) povrata i vratiti vrijednosti tipa iz funkcije.
fn naziv_funkcije (arg: tip, arg2: tip) -> (tip, tip) {
// tijelo funkcije ovdje
povratak arg, arg2
}
Evo funkcije koja uzima niz i 32-bitni cijeli broj kao argument i vraća argumente kao torku.
fn niz_i_cijeli broj (s: niz, n: i32) -> (niz, i32) {
povratak (s n);
}
The niz_i_cijeli_broj funkcija uzima niz i 32-bitni cijeli broj, vraćajući ih kao torku. Možete vratiti samo jednu vrijednost iz Rust funkcije.
Možete izostaviti povratak kada vraća konačni izraz iz funkcije, kako bi kod bio sažetiji.
fn niz_i_cijeli broj (s: niz, n: i32) -> (niz, i32) {
povratak (s n);
}// funkcije su ekvivalentne
fn str_and_int (s: String, n: i32) -> (String, i32) {
(s n)
}
Ove dvije funkcije imaju isto ponašanje budući da obje uzimaju niz i cijeli broj i vraćaju te argumente kao torku.
Pozivanje Rust funkcija
Jednu funkciju možete pozvati iz druge tako da unutar zagrada napišete njezino ime nakon čega slijede vrijednosti koje joj želite proslijediti:
fn add_numbers (x: i32, y: i32) -> i32 {
x + y
}
fn main() {
neka rezultat = dodaj_brojeve(3, 5);
println!("Rezultat je {}", rezultat); // Izlaz: rezultat je 8
}
The glavni pozivi funkcija zbroj_brojeva, prosljeđujući mu dva cijela broja. Dodjeljuje rezultat funkcije varijabli, proizlaziti.
Možete deklarirati funkcije za Rust Structs
Možete deklarirati funkcije unutar Rust struktura. To postaju metode za strukturu koja joj može pristupiti i modificirati je.
Rust nije isključivo objektno orijentiran, ali pruža strukture za grupiranje povezanih podataka. Možete raditi na implementaciji OOP koncepata u Rustu koristeći strukture s metodama.