Skip to content

Latest commit

 

History

History
122 lines (89 loc) · 3.07 KB

[02]-variable.md

File metadata and controls

122 lines (89 loc) · 3.07 KB

Variable

Pada rust variable bersifat immutable atau tidak bisa diubah secara bawaan, ini salah satu keunikan Rust. Untuk mendeklarasikan variable , mirip seperti javascript mengunakan notasi let:

let <Nama Variable> : <Tipe Data> = <Nilai>;

Rust juga mengenal pengambil tipe berdasarkan nilai, jadi tidak perlu menulis lagi tipe data. Penggunaan tipe data secara eksplisit disarankan untuk membuat kode mudah dirawat.

let <Nama Variable> = <Nilai>;

let nama : String = "Ell";
let umur = 21;

maka bila diprint:

fn main(){
    let nama : String = "Ell";
    let umur = 21;
    println!("Nama: {}",nama);
    println!("Umur: {}",umur);
}

Hasil:

Nama: Ell
Umur: 21

Mutabilitas

Sebelumnya sempat dibahas bahwasanya variable di Rust bersifat immutable by default, maka ada caranya untuk membuat mutable/bisa diubah dengan mengunakan kata kunci mut setelah let dan sebelum nama variable.

let mut <Nama Variable> : <Tipe Data> = <Nilai>;

let mut <Nama Variable> = <Nilai>;

Berikut contohnya:

fn main(){
    let mut nama = "Ell"; // ini akan otomatis bertipe String setelah konversi dari tiipe str
    let umur = 21;
    nama = "Elisabeth";
    println!("Nama: {}",nama);
    println!("Umur: {}",umur);
}

Keluaran dari kode diatas:

Nama: Elisabeth
Umur: 21

Shadowing

Biasanya kita membutuhkan operasi yang disimpan pada suatu variable dengan mengunakan nilai dari variable tersebut (baca: Induksi). Perbedaan dengan mut variable, meskipun kita merubah nilai pada mut variable hanya merubah nilai didalam variable sedangkan shadowing sepenuhnya definiskan variable baru dengan nama lama.

Contoh Mutable

fn main(){
    let nama = "Elisabeth";
    println!("Nama: {}", nama);
    nama = 33;
}

Diatas menghasilkan error saat diproses kompilator,

error[E0308]: mismatched types
  --> 02_variable.rs:18:12
   |
18 |     nama = 33;
   |            ^^ expected `&str`, found integer

error: aborting due to previous error

For more information about this error, try `rustc --explain E0308`.

Rust pro-tip: Jalankan rustc --explain E0308 diterminal, untuk mendapat penjelasan langsung dari terminal. Ini berguna sebagai dokumentasi offline, yang berisi penjelasan sebab akibat error dan pemamparan solusinya.

Contoh Shadowing

fn main(){
    let nama = "Elisabeth";
    println!("Nama: {}", nama);
    let nama = 33;
    println!("Nama: {}", nama);
}

Hasil

Nama: Elisabeth
Nama: 33

Terdapat perubahan tipe dari variable name : String menjadi Integer. Ini yang menjadi perbedaan yang jelas dari mutable variable dan shadowing. Kapan saat ingin mengunakan shadowing ? saat tidak terlalu memerlukan variable yang berubah-ubah.

Konstanta

Perbedaan dari variable immutable, konstanta merupakan variable tidak bisa diberi sifat mutable, melakukan shadowing dan selalu immutable sekali definisikan tidak bisa diubah.

const <Nama Variable> : <Tipe Data> = <Nilai>;

contoh:

const kamu_cantik : bool = false;

Jadi singkatnya, konstanta bersifat immutable permanen setelah didefiniskan.