Weitere Slices
Teil des Abschnitts Logik & Kontrollfluss der Rust-Journey von Coddy. Lektion 57 von 66.
Obwohl String-Slices sehr nützlich sind, ist das Slicing nicht auf Strings beschränkt. Rusts Slice-Konzept erstreckt sich auf jede Folge von Elementen und ist damit ein leistungsfähiges Werkzeug für die Arbeit mit Sammlungen, ohne deren Besitz zu übernehmen.
Du kannst Slices aus Arrays und Vektoren mit derselben Syntax erstellen, die du für Strings gelernt hast. Wenn du beispielsweise ein Array mit Zahlen hast, kannst du einen Slice erstellen, der auf einen Teil oder das gesamte Array verweist:
let numbers = [1, 2, 3, 4, 5];
let slice: &[i32] = &numbers[1..4]; // Das ergibt [2, 3, 4]
let full_slice: &[i32] = &numbers; // Dies referenziert das gesamte ArrayDasselbe Prinzip funktioniert mit Vektoren. Du kannst aus Vektoren Slices erstellen, um mit Teilen der Daten zu arbeiten, ohne sie zu verschieben oder zu kopieren:
let mut vec = vec![10, 20, 30, 40];
let vec_slice: &[i32] = &vec[0..2]; // Das gibt uns [10, 20]Aufgabe
EinfachDu erhältst drei Eingaben. Die erste Eingabe ist eine durch Kommas getrennte Liste von Zahlen. Die zweite Eingabe besteht aus zwei durch ein Leerzeichen getrennten Zahlen, die den Start- und Endindex zum Erstellen eines Slices darstellen. Die dritte Eingabe ist eine einzelne Zahl, die einen Index für den Zugriff auf das Slice darstellt.
Erstelle aus den durch Kommas getrennten Zahlen einen Vektor und erstelle anschließend mithilfe des angegebenen Bereichs ein Slice. Greife auf das Element am angegebenen Index im Slice zu und gib es aus.
Anforderungen:
- Lies die erste Eingabe (durch Kommas getrennte Zahlen) ein und entferne überflüssige Leerzeichen
- Teile die Eingabe an den Kommas auf und wandle jede Zahl in
i32um - Erstelle aus diesen Zahlen einen Vektor
- Lies die zweite Eingabe (zwei durch ein Leerzeichen getrennte Zahlen) ein und entferne überflüssige Leerzeichen
- Teile die zweite Eingabe am Leerzeichen auf, um die Start- und Endindizes zu erhalten
- Wandle beide Indizes in
usizeum - Erstelle mithilfe der Bereichssyntax
&vec[start..end]ein Slice aus dem Vektor - Lies die dritte Eingabe (den Index für den Zugriff) ein und entferne überflüssige Leerzeichen
- Wandle den Index in
usizeum - Greife auf das Element am angegebenen Index im Slice zu
- Gib das abgerufene Element aus
Eingabe:
- Erste Zeile: Durch Kommas getrennte Zahlen (z. B.
10,20,30,40,50) - Zweite Zeile: Zwei durch ein Leerzeichen getrennte Zahlen (z. B.
1 4) - Dritte Zeile: Eine Indexzahl (z. B.
2)
Ausgabe:
- Das Element am angegebenen Index im Slice
Probier es selbst
use std::io::{self, BufRead};
fn main() {
let stdin = io::stdin();
let mut lines = stdin.lock().lines();
// Lies die erste Eingabe (kommagetrennte Zahlen)
let first_input = lines.next().unwrap().unwrap();
// Lies die zweite Eingabe (Start- und Endindizes)
let second_input = lines.next().unwrap().unwrap();
// Lies die dritte Eingabe (Index zum Zugriff)
let third_input = lines.next().unwrap().unwrap();
// TODO: Schreibe deinen Code darunter
// Parse die kommagetrennten Zahlen und erstelle einen Vektor
// Parse die Start- und Endindizes
// Erstelle einen Slice aus dem Vektor
// Greife auf das Element am angegebenen Index aus dem Slice zu
// Gib das Ergebnis aus
// println!("{}", result);
}Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.
Alle Lektionen in Logik & Kontrollfluss
1Fortgeschrittener Kontrollfluss
Der 'match'-AusdruckAbgleichen mehrerer WerteBereiche abgleichenDer 'if let'-AusdruckSchleifen als AusdrückeRückblick – Einfacher Befehls-Parser4Daten gruppieren mit Structs
Was ist ein Struct?Übersicht über StructsZugriff auf Struct-FelderVeränderbare StructsStructs als FunktionsparameterTupel-StructsZusammenfassung – Ein Buch-Struct erstellen2Einführung in Vektoren
Was ist ein Vektor?Einen Vektor erstellenElemente mit push hinzufügenZugriff auf Vektor-ElementeÜber einen Vektor iterierenVeränderliche IterationElemente entfernenZusammenfassung – Einfacher Score-Tracker5Schlüssel-Wert-Paare mit Hash Maps
Was ist eine Hash Map?Erstellen einer Hash MapEinfügen von Schlüssel-Wert-PaarenZugreifen auf WerteIterieren über eine Hash MapAktualisieren eines WertesEntfernen eines PaaresZusammenfassung – Wortzähler8Projekt: Einfaches Artikelinventar
Projekt-SetupEinen Artikel hinzufügenLagerbestand prüfenEinen Artikel verkaufenAlles zusammenfügen11Abschluss-Herausforderungen
Wiederholung - Einzigartige ElementeWiederholung - Benutzerprofil-ValidatorWiederholung - Noten-Zusammenfassung3Kommandozeilen-To-Do-Liste
Projekt-SetupEine Aufgabe hinzufügenAlle Aufgaben anzeigenEine Aufgabe entfernenFinaler Code6Umgang mit fehlenden Werten mit 'Option'
Was ist ein 'Option'?'match' mit 'Option' verwendenis_some() und is_none()Ein 'Option' entpackenDie 'expect'-MethodeStandardwert bereitstellen: unwrap_orRückblick – Ein Element finden9String-Slices und mehr
String vs. &strString-Slices erstellenSlices als FunktionsparameterWeitere SlicesRückblick – Das erste Wort findenÜbe selbstständig: Online-Rust-Compiler