Funkcje Rust mają wiele niuansów, które różnią się od innych języków. Dowiedz się wszystkiego o ich składni tutaj.
Funkcje są podstawowymi konstrukcjami programistycznymi, ponieważ stanowią podstawę wielokrotnego użytku kodu i ułatwiają programowanie modułowe. Funkcje to samodzielne bloki kodu, które wykonują określone zadania. Mogą otrzymywać dane wejściowe w postaci argumentów i zwracać wartość.
Rust zapewnia funkcje organizacji kodu, enkapsulacji i ponownego wykorzystania kodu.
Definiowanie funkcji w Rust
Funkcje rdzy są bardzo podobne funkcje w każdym innym języku programowania, chociaż istnieją niewielkie różnice, które musisz zrozumieć.
Funkcje dla swoich programów w języku Rust zdefiniujesz za pomocą przyp słowo kluczowe, po którym następuje nazwa funkcji, opcjonalne argumenty i opcjonalny powrót typ danych.
// funkcja, która nie przyjmuje argumentów ani nie zwraca wartości
fn nazwa_funkcji() {
// ciało funkcji tutaj
}
Oto prosta funkcja Rusta, która nie przyjmuje żadnych argumentów ani nie zwraca żadnych wartości.
fn a_funkcja(){
niech x = 3;
println!("{}", X)
}
funkcja jest prostą funkcją Rusta, która wyświetla zmienną X.
Podpisy funkcji rdzy
Sygnatury funkcji to sposób nazywania funkcji i opisywania ich argumentów oraz zwracanych typów, bez dołączania treści funkcji. Sygnatury funkcji są przydatne do dokumentowania interfejsów API bibliotek Rusta.
Oto przykładowa sygnatura funkcji Rusta:
fn nazwa()
fn pozdrawiam (nazwa: &str)
The nazwa function jest minimalną sygnaturą funkcji, podczas gdy powitać podpis określa, że funkcja przyjmuje jeden argument, nazwa, typu string (&str).
Deklarowanie funkcji z argumentami i wartościami zwracanymi
Funkcje Rusta mogą przyjmować wiele argumentów, a granica nie jest jawnie zdefiniowana. Funkcje z argumentami są generalnie bardziej elastyczne, ponieważ mogą pobierać wartości z innych funkcji i części kodu.
Oto typowy model funkcji Rusta, która przyjmuje argumenty:
fn nazwa_funkcji (arg: typ, arg2: typ) {
// ciało funkcji tutaj
}
Typ argumentu funkcji może być typem wbudowanym w Rust lub typem niestandardowym z twojego programu.
Oto przykład prostej funkcji, która przyjmuje dwie liczby całkowite jako argumenty:
fn dodaj_liczby (x: i32, y: i32) {
println!("{}", x + y);
}
The dodaj_liczby funkcja pobiera dwie 32-bitowe liczby całkowite i wyświetla sumę liczb całkowitych.
Funkcje Rusta mogą zwracać wiele wartości; będziesz musiał określić zwracane typy i zwrócić wartości typu z funkcji.
fn nazwa_funkcji (arg: typ, arg2: typ) -> (typ, typ) {
// ciało funkcji tutaj
powrót arg, arg2
}
Oto funkcja, która jako argument przyjmuje łańcuch znaków i 32-bitową liczbę całkowitą i zwraca argumenty w postaci krotki.
fn string_and_integer (s: String, n: i32) -> (String, i32) {
powrót (s, n);
}
The string_and_integer funkcja pobiera ciąg znaków i 32-bitową liczbę całkowitą, zwracając je jako krotkę. Możesz zwrócić tylko jedną wartość z funkcji Rust.
Możesz pominąć powrót słowo kluczowe podczas zwracania końcowego wyrażenia z funkcji, aby kod był bardziej zwięzły.
fn string_and_integer (s: String, n: i32) -> (String, i32) {
powrót (s, n);
}// funkcje są równoważne
fn str_and_int (s: Ciąg, n: i32) -> (Ciąg, i32) {
(s, n)
}
Te dwie funkcje zachowują się tak samo, ponieważ obie pobierają łańcuch i liczbę całkowitą i zwracają te argumenty jako krotkę.
Wywoływanie funkcji Rusta
Możesz wywołać jedną funkcję z drugiej, wpisując jej nazwę, a następnie wartości, które chcesz przekazać, w nawiasach:
fn dodaj_liczby (x: i32, y: i32) -> i32 {
x + y
}
fn main() {
niech wynik = dodaj_liczby (3, 5);
println!("Wynik to {}", wynik); // Dane wyjściowe: Wynikiem jest 8
}
The główny wywołania funkcji dodaj_liczby, przekazując mu dwie liczby całkowite. Przypisuje wynik funkcji do zmiennej, wynik.
Możesz zadeklarować funkcje dla struktur rdzy
Możesz deklarować funkcje w strukturach Rusta. Stają się one metodami dla struktury, które mogą uzyskiwać do niej dostęp i ją modyfikować.
Rust nie jest zorientowany wyłącznie obiektowo, ale zapewnia struktury do grupowania powiązanych danych. Możesz pracować nad implementacją koncepcji OOP w Rust za pomocą struktur z metodami.