From 8c74aec23ab8e22e4ae0dcfd9f1bc9d3c0b2ee2e Mon Sep 17 00:00:00 2001 From: Noval Agung Prayogo Date: Fri, 29 Sep 2023 05:48:14 +0000 Subject: [PATCH] feat: improve var mutability explanation --- docs/basic/seleksi-kondisi-if.md | 4 ++++ docs/basic/variabel.md | 25 ++++++++++++++++++++++++- 2 files changed, 28 insertions(+), 1 deletion(-) diff --git a/docs/basic/seleksi-kondisi-if.md b/docs/basic/seleksi-kondisi-if.md index 1839929a..88adb6e3 100644 --- a/docs/basic/seleksi-kondisi-if.md +++ b/docs/basic/seleksi-kondisi-if.md @@ -109,6 +109,10 @@ println!("result_d adalah {result_d}"); Blok seleksi kondisi pada contoh di atas menjadi penentu nilai variabel `result_d`. Dengan kebutuhan tersebut, kita bisa juga memanfaatkan `let if` untuk mendapatkan hasil yang ekuivalen. +> Pada kode di atas, deklarasi variabel `result_d` dan pengisian nilainya adalah dipisah statement-nya. Penulisan seperti ini diperbolehkan pada variable immutable (tanpa perlu membuatnya mutable) selama operasi assignment hanya dilakukan sekali saja setelah deklarasi. +> +> Lebih detailnya dibahas pada chapter [Variabel section A.4.5](/basic/variabel#a45-deklarasi-variabel-tanpa-predefined-value). + Kode di atas jika diubah ke bentuk `let if` hasilnya menjadi seperti ini: ```rust diff --git a/docs/basic/variabel.md b/docs/basic/variabel.md index a4be2348..4ceecbb3 100644 --- a/docs/basic/variabel.md +++ b/docs/basic/variabel.md @@ -92,6 +92,12 @@ Perlu diketahui, bahwa *by default* semua variabel adalah *immutable*. Immutable Lalu bagaimana cara agar nilai variabel bisa diubah? Caranya dengan menambahkan keyword `mut` (yang merupakan kependekan dari *mutable*) saat pendefinisian variabel tersebut. +> Catatan tambahan: +> +> - Operasi assignment pada variabel immutable hanya boleh dilakukan sekali. Dan pada kode di atas telah dicontohkan caranya bagaimana. Variabel dideklarasikan sekaligus diisi nilainya. +> +> - Perlu diketahui bahwa sebenarnya diperbolehkan untuk memecah statement deklarasi variable dan assignment nilai sebagai 2 statement terpisah. Lebih jelasnya dibahas setelah ini pada section [section A.4.5](/basic/variabel#a45-deklarasi-variabel-tanpa-predefined-value). + ## A.4.3. Keyword `mut` Ok, mari kita coba, ubah statement deklarasi variabel `message_number`, tambahkan keyword `mut`. Lalu jalankan ulang program. @@ -178,7 +184,24 @@ Notasi penulisan tipe data adalah `namavariabel: tipedata`. Contoh seperti di at ## A.4.5. Deklarasi variabel tanpa *predefined value* -Sesuai dengan penjelasan di [dokumentasi spesifikasi Rust](https://doc.rust-lang.org/error-index.html#E0381), **tidak diperbolehkan mendeklarasikan variabel tanpa predefined value**. Jika dipaksa akan muncul error pada baris kode yang menggunakan variabel tersebut. +Sesuai dengan penjelasan di [dokumentasi spesifikasi Rust](https://doc.rust-lang.org/error-index.html#E0381), variable yang tidak ada value-nya akan memunculkan error saat program di-run. + +Meski demikian, diperbolehkan untuk memisahkan variable statement untuk deklarasi variable dan pengisian value. Sebagai contoh, statement `message_number` pada kode berikut ... + +```rust +let message_number = 1; +println!("message number {}", message_number); +``` + +... boleh dituliskan dalam 2 statement terpisah seperti ini: + +```rust +let message_number: i32; +message_number = 1; +println!("message number {}", message_number); +``` + +Intinya, operasi assignment hanya diperbolehkan 1x saja pada variabel *immutable*, baik itu saat deklarasi variable atau setelahnya. ## A.4.6. Deklarasi banyak variabel dalam satu statement