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 ;
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";
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);
}
→ Output
Orang terganteng se-RT adalah Adi
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");
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);
}
→ Output
Orang terganteng tingkat maksimal se-RT adalah Adi
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";
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);
}
→ Output
Orang terganteng adalah Adi
Orang terganteng adalah Purwanto
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);
}
→ Output
|
5 | println!("{}", dalam);
| ^^^^^ not found in this scope
→ Contoh beneran
fn main() {
let luar = 100;
{
let dalam = 10;
println!("{}", dalam);
println!("{}", luar);
}
println!("{}", luar);
}
→ Output
10
100
100
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);
}
→ Output
10
50
100
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:
Top comments (0)