Menu
Coddy logo textTech

Konwertowanie ciągów znaków na liczby

Część sekcji Logika i przepływ programu ścieżki Rust w Coddy. Lekcja 47 z 66.

Jednym z najczęstszych praktycznych zastosowań typu Result jest konwertowanie ciągów znaków na liczby. W Rust robi się to za pomocą metody .parse(), która doskonale pokazuje, dlaczego istnieje Result — ponieważ parsowanie może się nie powieść.

Metoda .parse() próbuje przekształcić ciąg znaków w liczbę, ale nie każdy ciąg znaków reprezentuje prawidłową liczbę. Na przykład „42” można sparsować jako liczbę 42, ale „hello” nie można przekształcić w żadną liczbę:

let valid_number = "42";
let invalid_number = "hello";

let result1: Result = valid_number.parse();
let result2: Result = invalid_number.parse();

Gdy parsowanie się powiedzie, .parse() zwraca Ok(number) zawierające przekonwertowaną wartość. Gdy się nie powiedzie, zwraca Err(error) z informacją o przyczynie niepowodzenia parsowania. Dzięki temu musisz jawnie obsłużyć obie możliwości, co zapobiega awarii programu przy nieprawidłowych danych wejściowych.

Możesz obsłużyć wynik parsowania, korzystając z dowolnej z poznanych technik pracy z Result — użyj match do jawnej obsługi, unwrap(), jeśli masz pewność, że operacja się powiedzie, lub operatora ?, aby propagować błędy.

challenge icon

Wyzwanie

Łatwy
Napisz funkcję parse_to_integer, która przyjmuje ciąg znaków input i zwraca sparsowaną wartość całkowitą. Jeśli ciągu znaków nie można sparsować jako prawidłowej liczby całkowitej, zwróć 0 jako wartość domyślną.

Użyj metody .parse(), aby przekonwertować ciąg znaków na i32, i odpowiednio obsłuż typ Result, aby zwrócić bezpieczną wartość.

Parametry:

  • input (String): ciąg znaków do sparsowania jako liczba całkowita

Zwraca: sparsowaną liczbę całkowitą w przypadku powodzenia lub 0, jeśli parsowanie się nie powiedzie (i32)

Spróbuj swoich sił

fn parse_to_integer(input: String) -> i32 {
    // Wpisz kod tutaj
}
quiz iconSprawdź się

Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.

Wszystkie lekcje w sekcji Logika i przepływ programu

Poćwicz samodzielnie: Kompilator Rust online