DEV Community

Adi Purwanto
Adi Purwanto

Posted on

Stage 2 - Variables | Belajar Rust #3

Sekarang kita akan masuk kedalam konsep dimana kita akan sangat membutuhkannya, di sesi ini kita akan mengulik apa itu variables dan bagaimana variables bisa melakukan store data.

1. Variables

Sebenarnya kita dapat membuat analogi variable itu sebagai kotak pindahan terlakban (transfer box ← * bener gak ya bahasa inggrisnya) yang memiliki isi (value) dan diberi nama (identifier) setiap kotaknya, agar kita mengetahui apa saja isi (value) didalamnya. Seperti analogi tersebut, di mana kita tidak bisa mengubah isi variable (immutable by default) karena kotak pindahan tersebut terlakban.

a. Membuat sebuah variable

Membuat variable dalam Rust itu sangat mudah, kita bisa menggunakan let (declaration statement) binding yang disertai dengan nama variable.

let nama_variable ;
Enter fullscreen mode Exit fullscreen mode

let → identifier

nama_variable → variable name

; → jangan lupa titik koma kata Pak Sandhika Galih

Dalam Rust menulis nama variable menggunakan convention yang ditetapkan yaitu snake_case

snake_case

Semua huruf diwajibkan atau fardhu ain mengunganakn lower case.

Semua kata wajib hukumnya dipisah dengan menggunakan underscore ( _ ).

b. Inisialisasi variable

Kita dapat menginisialisasikan sebuah variable dengan memberikan nilai (value) ke variable ketika dideklarasikan. Value akan terikat ke variable tersebut.

let ganteng = "Adi";
Enter fullscreen mode Exit fullscreen mode

let → identifier

ganteng → variable name

“Adi” → variable value

; → jangan lupa titik koma kata Pak Sandhika Galih

→ Contoh

fn main() {
  let ganteng = "Adi";
  println!("Orang terganteng se-RT adalah {}", ganteng);
}
Enter fullscreen mode Exit fullscreen mode

→ Output

Orang terganteng se-RT adalah Adi
Enter fullscreen mode Exit fullscreen mode

Note: Begini kawan, sangat tidak saya rekomendasikan untuk membuat variable yang tidak diinisialisasi terlebih dahulu.

c. Membuat multiple variables

Hmm apakah mungkin kita dapat assign multiple variables? Jawabannya pasti mungkin dong, buat apa aku bikin kalo gak mungkin, ohh aku.

let (ganteng, level, tempat) = ("Adi", "maksimal", "RT");
Enter fullscreen mode Exit fullscreen mode

let → identifier

ganteng → variable name 1

level → variable name 2

tempat → variable name 3

"Adi" → variable value 1

“maksimal” → variable value 2

“RT” → variable value 3

→ Contoh

fn main() {
  let (ganteng, level, tempat) = ("Adi", "maksimal", "RT");
  println!("Orang terganteng tingkat {1} se-{2} adalah {0}", ganteng, level, tempat);
}
Enter fullscreen mode Exit fullscreen mode

→ Output

Orang terganteng tingkat maksimal se-RT adalah Adi
Enter fullscreen mode Exit fullscreen mode

Note: Kalau kita tetap ngeyel un-assigned atau tidak memakai variable, pasti kalian dapat teguran warning dari Rust compiler. Biar gak kena teguran lagi kita bisa sogok dia dengan nulis expression #[allow(unused_variables, unused_mut)] di awal dari kode program. Ingat catatan diatas nda baik hukumnya kalo ngeyel masih un-assigned atau tidak memakai variables.

d. Membuka lakban kotak/ membuat variable mutable

Waitt judul apaan ini, bukannya di awal dibilangin kan variable itu immutable. Tapi tunggu dulu kan namanya semua orang pasti ingin berubah, ya variable juga dong ingin menjadi seseorang yang lebih baik toh wkwk (ketawa khas +62). Jadi intinya kita bisa dah bikin variable yang mutable dengan cara membuat identifier let yang disertai dengan mut keyword dan nama variable.

let mut ganteng = "Adi";
Enter fullscreen mode Exit fullscreen mode

let mut → identifier untuk mutable variable

ganteng → variable name

"Adi" → variable value

→ Contoh

fn main() {
  let mut ganteng = "Adi";
  println!("Orang terganteng adalah {}", ganteng);
  ganteng = "Purwanto";
  println!("Orang terganteng adalah {}", ganteng);
}
Enter fullscreen mode Exit fullscreen mode

→ Output

Orang terganteng adalah Adi
Orang terganteng adalah Purwanto
Enter fullscreen mode Exit fullscreen mode

2. Scope dan Shadowing

a. Scope dari sebuah variable

Scope dari sebuah variable itu mengacu pada visibility dari sebuah variable, atau program mana sih yang bisa mengakses variable tersebut. Semua hal itu tuh tergantung dimana kita mendeklarasikan si variable ini. variable akan memiliki scope global jika kita tidak mendeklarasikannya di dalam { }, block of code.

Terdapat dua types dari variables berdasarkan scopenya.

1). Local variable

Local variable adalah variable yang berada di dalam block of code { } , kita tidak dapat mengakses variable diluar kurung kurawal. Jadi setelah kurung kurawal tutup }, sebenarnya variable itu dibebaskan dan memori untuk variable tidak dialokasikan.

2). Global variable

Jadi, global variable itu semacam kebalikan dari local variable, dimana variable yang dideklarasikan di luar block of code dan bisa diakses di dalam block berikutnya itu bisa kita sebut sebagai global variables.

→ Contoh error

fn main() {
    {
        let dalam = 10; // * local variable
    }
    println!("{}", dalam);
}
Enter fullscreen mode Exit fullscreen mode

→ Output

  |
5 |     println!("{}", dalam);
  |                    ^^^^^ not found in this scope
Enter fullscreen mode Exit fullscreen mode

→ Contoh beneran

fn main() {
  let luar = 100;
    {
        let dalam = 10;
      println!("{}", dalam);
      println!("{}", luar);
    }
  println!("{}", luar);
}
Enter fullscreen mode Exit fullscreen mode

→ Output

10
100
100
Enter fullscreen mode Exit fullscreen mode

b. Shadowing

Variable shadowing adalah teknik yang mana sebuah variable yang dideklarasi di dalam scope memiliki nama yang sama seperti variable yang di deklarasi di luar scope. Udah gitu aja 😉.

→ Contoh

fn main() {
  let luar = 100; // * variable luar di luar block
    {
        let dalam = 10;
        let luar = 50; // * variable luar di dalam block
      println!("{}", dalam);
      println!("{}", luar);
    }
  println!("{}", luar);
}
Enter fullscreen mode Exit fullscreen mode

→ Output

10
50
100
Enter fullscreen mode Exit fullscreen mode

Untuk stage 2 ini saya memiliki tantangan, yok di coba terus upload hasilnya di Discussion 🔥.

Tantangan:

Dekalarsikan sebuah variable learning_purpose yang berisi tujuan kalian belajar rust, lalu jangan lupa print di console/ terminal kalian.

Note: Jangan lupa kasih tulisan mission passed!


Jika ada kesalahan dalam menyampaikan konsep dan penulisan mohon bantuannya di kolom discussion 🤗. Terima kasih.

#samasamabelajar


LIST COURSE:

If you don't know me, then, you would not know who I am

Stage 1


Twitter

Buy me a coffe

Top comments (0)