Rooste funktsioonidel on palju nüansse, mis erinevad teistest keeltest. Lisateavet nende süntaksi kohta leiate siit.
Funktsioonid on olulised programmeerimiskonstruktsioonid, kuna need panevad aluse koodi korduvkasutatavusele ja hõlbustavad modulaarset programmeerimist. Funktsioonid on iseseisvad koodiplokid, mis täidavad konkreetseid ülesandeid. Nad saavad vastu võtta sisendi argumentide kujul ja tagastada väärtuse.
Rust pakub funktsioone koodi organiseerimiseks, kapseldamiseks ja koodi korduvkasutamiseks.
Funktsioonide määratlemine roostes
Roostefunktsioonid on palju sarnased mis tahes muus programmeerimiskeeles, kuigi on väikseid erinevusi, mida peate mõistma.
Saate määrata oma Rust-programmide funktsioonid fn märksõna, millele järgneb funktsiooni nimi, valikulised argumendid ja valikuline tagastus andmetüüp.
// funktsioon, mis ei võta argumente ega tagasta väärtust
fn funktsiooni_nimi() {
// funktsiooni keha siin
}
Siin on lihtne Rust-funktsioon, mis ei võta vastu argumente ega tagasta väärtusi.
fn a_function(){
olgu x = 3;
println!("{}", x)
}
a_funktsioon on lihtne Rust-funktsioon, mis prindib muutuja x.
Roostefunktsiooni allkirjad
Funktsioonisignatuurid on viis funktsioonide nimetamiseks ning nende argumentide ja tagastustüüpide kirjeldamiseks, ilma funktsiooni keha lisamata. Funktsioonisignatuurid on kasulikud Rusti teekide API-de dokumenteerimiseks.
Siin on Rust-funktsiooni allkirja näide:
fn nimi ()
fn tervitus (nimi: &str)
The nimi funktsioon on minimaalne funktsiooni allkiri, samas kui tervitada signatuur määrab, et funktsioon võtab ühe argumendi, nimi, tüüpi string (&str).
Funktsioonide deklareerimine argumentide ja tagastusväärtustega
Roostefunktsioonid võivad võtta palju argumente ja piir ei ole selgelt määratletud. Argumentidega funktsioonid on üldiselt paindlikumad, kuna need võivad võtta väärtusi teistest funktsioonidest ja koodiosadest.
Siin on tüüpiline Rust-funktsiooni mudel, mis võtab argumente:
fn funktsiooni_nimi (arg: tüüp, arg2: tüüp) {
// funktsiooni keha siin
}
Funktsiooni argumendi tüüp võib olla sisseehitatud Rust või teie programmi kohandatud tüüp.
Siin on näide lihtsast funktsioonist, mis võtab argumentidena kaks täisarvu:
fn lisa_numbrid (x: i32, y: i32) {
println!("{}", x + y);
}
The lisa_numbrid funktsioon võtab kaks 32-bitist täisarvu ja prindib täisarvude summa.
Roostefunktsioonid võivad tagastada mitu väärtust; peate määrama tagastamise tüübi (tüübid) ja tagastama funktsiooni tüübi väärtused.
fn funktsiooni_nimi (arg: tüüp, arg2: tüüp) -> (tüüp, tüüp) {
// funktsiooni keha siin
tagasi arg, arg2
}
Siin on funktsioon, mis võtab argumendina sisse stringi ja 32-bitise täisarvu ning tagastab argumendid korteegina.
fn string_ja_täisarv (s: String, n: i32) -> (String, i32) {
tagasi (s, n);
}
The string_ja_täisarv funktsioon võtab stringi ja 32-bitise täisarvu, tagastades need korteegina. Funktsioonist Rust saate tagastada ainult ühe väärtuse.
Võite välja jätta tagasi märksõna funktsiooni lõpliku avaldise tagastamisel, et muuta kood kokkuvõtlikumaks.
fn string_ja_täisarv (s: String, n: i32) -> (String, i32) {
tagasi (s, n);
}// funktsioonid on samaväärsed
fn str_and_int (s: String, n: i32) -> (String, i32) {
(s, n)
}
Need kaks funktsiooni käituvad samamoodi, kuna mõlemad võtavad sisse stringi ja täisarvu ning tagastavad need argumendid korteegina.
Roostefunktsioonide helistamine
Saate kutsuda ühte funktsiooni teisest, kirjutades selle nime ja sulgudes väärtused, mida soovite sellele edastada:
fn lisa_numbrid (x: i32, y: i32) -> i32 {
x + y
}
fn main() {
let result = add_numbers(3, 5);
println!("Tulemus on {}", tulemus); // Väljund: tulemus on 8
}
The peamine funktsioonikutsed lisa_numbrid, edastades sellele kaks täisarvu. See määrab funktsiooni tulemuse muutujale, tulemus.
Saate deklareerida roostekonstruktsioonide funktsioone
Funktsioone saab deklareerida Rust-struktuurides. Need muutuvad meetoditeks struktuuri jaoks, mis pääseb sellele juurde ja seda saab muuta.
Rust ei ole puhtalt objektorienteeritud, kuid see pakub struktuure seotud andmete rühmitamiseks. Saate töötada OOP-kontseptsioonide rakendamise nimel Rustis, kasutades meetoditega struktuure.