
Intro
Kemarin (31/06) aku menyempatkan diri untuk belajar kembali soal statement dan ekspression dari blog Nicky Meuleman dan tulisan ku di sini. Sebenarnya perbedaan keduanya masih agak rancu, aliasbelum ngerti. Makanya terpikir untuk mengulang lagi.
Aku sering kebingungan menentukan mana yang harus diakhiri semi colon (;) dan mana yang tidak memerlukannya. Kal ini coba aku bahas agar tidak lupa dan sepertinya sudah ditemukan bagian oh momentos.
Praktik
Definisi statement secara sederhana adalah kode yang berisi instruksi serta melakukan sesuatu dan expression adalah kode yang mengevaluasi nilai dan melakukan return.
Agar lebih mudah, analogikan mengembalikan seperti sebuah pantulan bola kasti. Statement berarti bola tidak memantul sebaliknya expression adalah bola yang memantul. Hal yang dipantulkan adalah nilai.
Analogi yang ku buat sebelumnya kurang tepat karena menyederhanakan statement dan expression seperti sebuah pantulan bola malah membuat kita semakin pusing 7 siskamling.
Agar mudah memahami kata “evaluate”, kita harus membayangkan terhadap esensi dari kata “nilai”. Mari kita batasi nilai dengan sesuatu yang terukur seperti f32, i32, u32, isize, usize, dan bool. Berdasarkan KBBI nilai juga dapat diartikan suatu ukuran atau perbandingan.
nilai/ni·lai/ n 1 harga (dalam arti taksiran harga): sebenarnya tidak ada ukuran yang pasti untuk menentukan — intan; 2 harga uang (dibandingkan dengan harga uang yang lain): — rupiah terus menurun; 3 angka kepandaian; biji; ponten: rata-rata — mata pelajarannya adalah sembilan; sekurang-kurangnya — tujuh untuk ilmu pasti baru dapat diterima di akademi teknik itu; 4 banyak sedikitnya isi; kadar; mutu: — gizi berbagai jeruk hampir sama; suatu karya sastra yang tinggi — nya;
let harga_buku = 20000;
Kode 1.0
Kode 1.0 adalah bentuk dari statement karena terdapat variabel binding dengan let bernilai 20000 dan diakhiri dengan ;. Nilai dari harga_buku adalah expression karena 20000 mengevaluasi ke nilai 20000.
Ingat bahwa statement di dalamnya sering terdapat expression. Kuncinya ada pada kata return atau mengembalikan suatu nilai. Maka dari itu blok , fungsi, dan if adalah sebuah expression yang mengevaluasi suatu nilai untuk di-return.
fn main () {
let mut harga_buku = 20000;
{
harga_buku = 21000;
}
println! ("{ }", harga_buku)
Kode 2.0
Blok akan mengembalikan nilai berupa variabel harga buku yang telah berubah. Contoh ini juga berhubungan dengan pembahasan kemarin mengenai shadowing. Bagian terakhir dari blok atau fungsi yang akan di-return, yaitu harga_buku dengan nilai baru, yaitu 21000.
Harusnya jika blok bukan expression nilai tidaklah berubah dikarenakan sudah berada di area out of scope.
fn main () {
let ini_buku_sejarah = true;
let harga_buku_sejarah = if ini_buku_sejarah {20000}
else {println!("bukan buku sejarah");};
println!("{}", harga_buku_sejarah);
}
Kode 3.0
Kode 3.0 akan error karena kedua cabang dari if memiliki format yang berbeda, satu int dan lainnya ada &str. if adalah expression sehingga kedua cabang akan dievaluasi nilainya maka ketika terdapat perbedaan, compiler menjadi bingung “apa yang harus direturn, int atau &str“.
--> src/main.rs:5:13
|
4 | let harga_buku_sejarah = if ini_buku_sejarah {20000}
| - ----- expected because of this
| _____________________________|
| |
5 | | else {println!("bukan buku sejarah");};
| |_____________^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^_- `if` and `else` have incompatible types
| |
| expected integer, found `()`
|
Penutup
Penjelasan ini masih belum terlalu ngena, kedepannya akan terus kupelajari apa yang dimaksud dengan statement dan expression secara lebih dalam serta mencari contoh konkrit. Akhir kata biar maskot yang ngomong:

Leave a comment