Potongan Lainnya
Termasuk bagian Logika dan Alur dalam perjalanan Rust di Coddy. Pelajaran 57 dari 66.
Meskipun slice string sangat berguna, slicing tidak terbatas pada string saja. Konsep slice di Rust berlaku untuk urutan elemen apa pun, sehingga menjadi alat yang ampuh untuk bekerja dengan koleksi tanpa mengambil kepemilikan.
Kamu bisa membuat slice dari array dan vector menggunakan sintaks yang sama seperti yang kamu pelajari untuk string. Misalnya, jika kamu memiliki array angka, kamu bisa membuat slice yang merujuk ke sebagian atau seluruh array tersebut:
let numbers = [1, 2, 3, 4, 5];
let slice: &[i32] = &numbers[1..4]; // Ini menghasilkan [2, 3, 4]
let full_slice: &[i32] = &numbers; // Ini merujuk ke seluruh arrayPrinsip yang sama berlaku untuk vektor. Kamu bisa membuat slice dari vektor untuk menggunakan sebagian data tanpa memindahkan atau menyalinnya:
let mut vec = vec![10, 20, 30, 40];
let vec_slice: &[i32] = &vec[0..2]; // Ini menghasilkan [10, 20]Tantangan
MudahKamu akan menerima tiga input. Input pertama adalah list angka yang dipisahkan dengan koma. Input kedua adalah dua angka yang dipisahkan dengan spasi, yang mewakili indeks awal dan akhir untuk membuat slice. Input ketiga adalah satu angka yang mewakili indeks untuk mengakses elemen dari slice.
Buat vector dari angka yang dipisahkan dengan koma, lalu buat slice menggunakan rentang yang ditentukan. Akses elemen pada indeks yang diberikan dari slice, lalu cetak elemen tersebut.
Persyaratan:
- Baca input pertama (angka yang dipisahkan dengan koma), lalu pangkas whitespace
- Pisahkan input berdasarkan koma dan parse setiap angka menjadi
i32 - Buat vector dari angka-angka tersebut
- Baca input kedua (dua angka yang dipisahkan dengan spasi), lalu pangkas whitespace
- Pisahkan input kedua berdasarkan spasi untuk mendapatkan indeks awal dan akhir
- Parse kedua indeks menjadi
usize - Buat slice dari vector menggunakan sintaks rentang
&vec[start..end] - Baca input ketiga (indeks yang akan diakses), lalu pangkas whitespace
- Parse indeks menjadi
usize - Akses elemen pada indeks yang ditentukan dari slice
- Cetak elemen yang diakses
Input:
- Baris pertama: Angka yang dipisahkan dengan koma (misalnya,
10,20,30,40,50) - Baris kedua: Dua angka yang dipisahkan dengan spasi (misalnya,
1 4) - Baris ketiga: Angka indeks (misalnya,
2)
Output:
- Elemen pada indeks yang ditentukan dari slice
Coba sendiri
use std::io::{self, BufRead};
fn main() {
let stdin = io::stdin();
let mut lines = stdin.lock().lines();
// Baca input pertama (angka-angka yang dipisahkan koma)
let first_input = lines.next().unwrap().unwrap();
// Baca input kedua (indeks awal dan akhir)
let second_input = lines.next().unwrap().unwrap();
// Baca input ketiga (indeks yang akan diakses)
let third_input = lines.next().unwrap().unwrap();
// TODO: Tulis kodemu di bawah ini
// Uraikan angka-angka yang dipisahkan koma dan buat vector
// Uraikan indeks awal dan akhir
// Buat slice dari vector
// Akses elemen pada indeks yang ditentukan dari slice
// Cetak hasilnya
// println!("{}", result);
}Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.
Semua pelajaran di Logika dan Alur
1Alur Kontrol Lanjutan
Ekspresi 'match'Mencocokkan Beberapa NilaiMencocokkan RentangEkspresi 'if let'Perulangan sebagai EkspresiRangkuman, Parser Perintah Sederhana4Mengelompokkan Data dengan Struct
Apa Itu Struct?Ringkasan StructMengakses Field StructStruct yang Dapat DiubahStruct sebagai Parameter FungsiStruct TupleRangkuman: Buat Struct Buku2Pengantar Vektor
Apa Itu Vektor?Membuat VektorMenambahkan Elemen dengan pushMengakses Elemen VektorMelakukan Iterasi pada VektorIterasi MutableMenghapus ElemenRangkuman: Pelacak Skor Dasar5Pasangan Kunci-Nilai dengan Hash Map
Apa Itu Hash Map?Membuat Hash MapMenyisipkan Pasangan Kunci-NilaiMengakses NilaiMenelusuri Hash MapMemperbarui NilaiMenghapus PasanganRangkuman: Penghitung Kata8Proyek: Inventaris Barang Sederhana
Menyiapkan ProyekMenambahkan BarangMemeriksa StokMenjual BarangMenyatukan Semuanya3Daftar Tugas Baris Perintah
Penyiapan ProyekMenambahkan TugasMelihat Semua TugasMenghapus TugasKode Akhir6Menangani Ketiadaan dengan 'Option'
Apa itu 'Option'?Menggunakan 'match' dengan 'Option'is_some() dan is_none()Membuka bungkus 'Option'Metode expectMemberikan Nilai Default: unwrap_orRangkuman: Menemukan Elemen9Potongan String dan Lainnya
String vs. &strMembuat Potongan StringPotongan sebagai Parameter FungsiPotongan LainnyaRangkuman: Temukan Kata PertamaLatihan sendiri: Compiler Rust online