Pelajaran modul (2/2)
Tipe Primitif
Rust adalah bahasa yang diketik secara statis, artinya ia harus mengetahui tipe semua variabel pada waktu kompilasi. Biasanya, kompiler dapat menyimpulkan tipe berdasarkan nilai yang ditetapkan, namun terkadang perlu atau membantu untuk menentukannya secara manual.
Tipe primitif di Rust dibagi menjadi dua kategori utama: skalar (nilai tunggal) dan gabungan (kelompok nilai).
Jenis Skalar
Tipe skalar mewakili satu nilai. Karat memiliki empat tipe skalar dasar:
- Bilangan Bulat: Bilangan bulat. Mereka dapat ditandatangani (
i8,i16,i32,i64,i128,isize) atau tidak ditandatangani (u8,u16,u32,u64,u128,usize). Tipe defaultnya adalahi32. - Titik mengambang: Angka dengan koma desimal. Bisa berupa
f32atauf64(presisi ganda, default). - Boolean: Mewakili kebenaran logis dengan
trueataufalse(ketikbool). - Karakter: Nilai skalar Unicode tunggal yang diapit tanda kutip tunggal (ketik
char), misalnya'a','ℤ', atau emoji'😻'.
Contoh anotasi tipe eksplisit:
let x: i64 = 42;
let y: f64 = 3.1415;
let is_rust_awesome: bool = true;
let heart_emoji: char = '❤';Jenis Senyawa
Tipe gabungan dapat mengelompokkan beberapa nilai ke dalam satu tipe. Karat memiliki dua jenis senyawa primitif utama:
Tupel
Tuple mengelompokkan nilai dari tipe berbeda ke dalam koleksi berukuran tetap:
let person: (String, i32) = (String::from("Alice"), 30);
// Destructuring to extract values
let (name, age) = person;
// Direct access with index using dot (.)
let name_direct = person.0;
let age_direct = person.1;Array (Daftar ukuran tetap)
Array mengelompokkan beberapa elemen dengan tipe yang sama ke dalam koleksi berukuran tetap yang disimpan di tumpukan:
let numbers = [1, 2, 3, 4, 5]; // Inferred as [i32; 5]
let first = numbers[0]; // Access by index
let third = numbers[2];Jika Anda mencoba mengakses indeks di luar batas array (mis., numbers[10]), Rust akan langsung crash (panik) saat runtime alih-alih mengizinkan akses memori yang tidak sah.
Perbandingan
| Fitur | Tupel | Himpunan |
|---|---|---|
| Jenis elemen | Bisa berbeda | Harus sama |
| Ukuran | Memperbaiki | Memperbaiki |
| Akses | Indeks melalui titik (misalnya, .0) | Tanda kurung siku (mis., [0]) |
Cobalah sendiri
Deklarasikan tuple bernama stats yang berisi usia 30 (integer) dan skor 95,5 (float). Selanjutnya, cetak skor ke layar dengan mengakses langsung elemen kedua tupel menggunakan indeksnya.
Tunjukkan petunjuk
Buat tuple dengan `let stats = (30, 95.5);`. Akses elemen kedua menggunakan `stats.1` di dalam makro `println!`.
Solusi tersedia setelah 3 upaya
Deklarasikan array bernama angka yang berisi nilai integer dari 1 hingga 5. Cetak elemen ketiga array (indeks 2) ke layar menggunakan println!.
Tunjukkan petunjuk
Deklarasikan array dengan `biarkan angka = [1, 2, 3, 4, 5];` dan akses elemen ketiga dengan mengindeksnya dengan `[2]`.
Solusi tersedia setelah 3 upaya
Mengingat tuple `let point = (10, 20);`, gunakan destrukturisasi untuk mengekstrak nilai menjadi dua variabel bernama `x` dan `y`. Kemudian, cetak jumlah `x` dan `y`.
Tunjukkan petunjuk
Gunakan sintaksis `let (x, y) = point;` untuk mengubah struktur tuple dan kemudian menjumlahkan variabel dalam `println!`.
Solusi tersedia setelah 3 upaya