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.
PÄEVA VIDEO MAKKEUSE
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 .
// function that neither takes in arguments nor returns a value
fn function_name() {
// function body here
}
Siin on lihtne Rust-funktsioon, mis ei võta vastu argumente ega tagasta väärtusi.
fn a_function(){
let 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 name()
fn greet(name: &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:
kuidas lisada rakendust vizio nutitelevisiooni
fn function_name(arg: type, arg2: type) {
// function body here
}
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 add_numbers(x: i32, y: i32) {
println!("{}", x + y);
}
The lisa_numbrid funktsioon võtab kaks 32-bitist täisarvu ja prindib täisarvude summa.
kuidas kontrollida, kas kõvaketas ei tööta
Roostefunktsioonid võivad tagastada mitu väärtust; peate määrama tagastamise tüübi(d) ja tagastama funktsiooni tüübi väärtused.
fn function_name(arg: type, arg2: type) -> (type, type) {
// function body here
return arg, arg2
}
Siin on funktsioon, mis võtab argumendina sisse stringi ja 32-bitise täisarvu ning tagastab argumendid korteegina.
fn string_and_integer(s: String, n: i32) -> (String, i32) {
return (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_and_integer(s: String, n: i32) -> (String, i32) {
return (s, n);
}
// the functions are equivalent
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 add_numbers(x: i32, y: i32) -> i32 {
x + y
}
fn main() {
let result = add_numbers(3, 5);
println!("The result is {}", result); // Output: The result is 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.