Masukkan Password
29 The Complete Kotlin Course #28- When Expression - Kotlin Tutorials for Beginners
Materi ini memperkenalkan salah satu fitur penting Kotlin untuk control flow, yaitu when expression.
Kalau sebelumnya kamu sudah belajar:
ifelseelse ifwhiledo...whilebreakcontinue- nested loop
sekarang kita belajar when.
Secara sederhana:
whendigunakan untuk memilih aksi berdasarkan nilai atau kondisi tertentu.
Kamu bisa membayangkan when sebagai versi Kotlin yang sangat fleksibel dari switch/case.
1. Apa itu when?
Misalnya kita mempunyai:
val number = 10
Kita ingin bertanya:
“Kalau
numberadalah 0, lakukan apa?”
Kita bisa menggunakan:
when (number) {
0 -> println("It is zero")
else -> println("It is not zero")
}
Kalau:
number = 0
hasil:
It is zero
Kalau:
number = 10
hasil:
It is not zero
2. Struktur dasar when
Perhatikan:
when (number) {
0 -> println("It is zero")
else -> println("It is not zero")
}
Kita bedah.
when
when
adalah keyword Kotlin untuk membuat when expression.
(number)
when (number)
Artinya:
Kita sedang memeriksa nilai dari
number.
0
0 ->
Ini adalah case/value yang kita cari.
Artinya:
Kalau
numberbernilai 0…
->
0 -> println(...)
Simbol -> menunjukkan:
Jika kondisi/case di sebelah kiri cocok, jalankan expression di sebelah kanan.
Jadi:
0 → lakukan println("It is zero")
else
else -> ...
Artinya:
Kalau tidak ada case sebelumnya yang cocok, jalankan ini.
else bisa dianggap sebagai fallback/default.
3. Analogi sederhana
Bayangkan kamu punya mesin penjual minuman.
Kamu memasukkan kode:
A
Mesin bertanya:
WHEN kode:
A → keluarkan Cola
B → keluarkan Tea
C → keluarkan Coffee
ELSE → kode tidak dikenal
Dalam Kotlin:
when (code) {
"A" -> println("Cola")
"B" -> println("Tea")
"C" -> println("Coffee")
else -> println("Unknown code")
}
Jadi when seperti:
“Kalau nilainya begini → lakukan ini. Kalau begitu → lakukan itu.”
4. when dengan angka
Contoh:
val number = 2
when (number) {
1 -> println("One")
2 -> println("Two")
3 -> println("Three")
else -> println("Other number")
}
Karena:
number = 2
maka Kotlin mencari case yang cocok:
1 → tidak cocok
2 → cocok ✅
3 → tidak perlu diperiksa
Output:
Two
5. Hanya branch pertama yang cocok yang dijalankan
Ini konsep penting.
Misalnya:
val number = 2
when (number) {
1 -> println("One")
2 -> println("Two")
3 -> println("Three")
else -> println("Other")
}
Ketika menemukan:
2 -> ...
Kotlin menjalankan branch tersebut.
Setelah itu when selesai.
Kita tidak perlu menulis break.
6. Ini berbeda dengan Java switch
Video membandingkan when dengan Java switch.
Secara konsep memang mirip.
Contoh Java tradisional:
switch (number) {
case 1:
...
break;
case 2:
...
break;
}
Pada Java, break biasanya digunakan agar eksekusi tidak fall-through ke case berikutnya.
Kotlin:
when (number) {
1 -> println("One")
2 -> println("Two")
}
Tidak perlu:
break
Karena branch when yang cocok selesai, lalu when selesai.
Jadi untuk pemula, ingat saja:
whenKotlin tidak membutuhkanbreakdi setiap branch seperti polaswitchJava tradisional.
7. when juga bisa menggunakan else
Misalnya:
val number = 7
when (number) {
1 -> println("One")
2 -> println("Two")
3 -> println("Three")
else -> println("Something else")
}
Karena 7 tidak sama dengan:
1
2
3
maka:
else
dijalankan.
Output:
Something else
Mental model:
number?
↓
1? → branch 1
2? → branch 2
3? → branch 3
lainnya → else
8. when tidak hanya untuk Int
Ini salah satu kelebihan when.
Video kemudian mengubah:
val number = 10
menjadi sesuatu seperti:
val name = "master"
Kemudian kita bisa memeriksa String.
Contoh:
val name = "Udemy"
when (name) {
"Udemy" -> println("Learning system")
"YouTube" -> println("Learning system")
"Coursera" -> println("Learning system")
else -> println("Not a learning system")
}
Karena:
name = "Udemy"
hasil:
Learning system
Kalau:
name = "Coursera"
hasilnya juga:
Learning system
Karena keduanya memiliki branch masing-masing yang menghasilkan output yang sama.
9. Beberapa nilai bisa digabung
Nah, Kotlin memiliki syntax yang lebih ringkas.
Daripada:
val name = "Udemy"
when (name) {
"Udemy" -> println("Learning system")
"YouTube" -> println("Learning system")
"Coursera" -> println("Learning system")
else -> println("Not a learning system")
}
kita bisa menulis:
val name = "Udemy"
when (name) {
"Udemy", "YouTube", "Coursera" -> println("Learning system")
else -> println("Not a learning system")
}
Perhatikan:
"Udemy", "YouTube", "Coursera" ->
Artinya:
Jika
namesama dengan Udemy ATAU YouTube ATAU Coursera, jalankan branch ini.
Ini sangat berguna ketika beberapa nilai memiliki tindakan yang sama.
10. Cara membacanya
Kode:
when (name) {
"Udemy", "YouTube", "Coursera" -> println("Learning system")
else -> println("Not a learning system")
}
Bisa kita baca:
WHEN
nameadalah Udemy, YouTube, atau Coursera → print “Learning system”. Jika tidak → print “Not a learning system”.
11. Contoh yang lebih dekat dengan kehidupan sehari-hari
Misalnya kita memiliki:
val day = 3
Kita ingin menentukan nama hari.
when (day) {
1 -> println("Monday")
2 -> println("Tuesday")
3 -> println("Wednesday")
4 -> println("Thursday")
5 -> println("Friday")
6 -> println("Saturday")
7 -> println("Sunday")
else -> println("Invalid day")
}
Karena:
day = 3
maka output:
Wednesday
Ini jauh lebih mudah dibaca daripada membuat banyak else if.
12. Bandingkan if dengan when
Misalnya kita ingin menentukan grade.
Dengan if:
if (grade == "A") {
println("Excellent")
} else if (grade == "B") {
println("Good")
} else if (grade == "C") {
println("Average")
} else {
println("Other")
}
Dengan when:
when (grade) {
"A" -> println("Excellent")
"B" -> println("Good")
"C" -> println("Average")
else -> println("Other")
}
when terasa lebih rapi ketika kita memiliki banyak kemungkinan nilai yang ingin dibandingkan.
13. when adalah expression
Ini bagian yang sangat penting karena sebelumnya kamu sudah belajar bahwa if di Kotlin adalah expression.
when juga merupakan expression.
Artinya hasil dari when bisa disimpan ke variable.
Contoh:
val number = 2
val result = when (number) {
1 -> "One"
2 -> "Two"
3 -> "Three"
else -> "Other"
}
println(result)
Hasil:
Two
Perhatikan:
val result = when (number) {
Artinya:
Jalankan
when, lalu hasil branch yang cocok dimasukkan keresult.
Ini konsep yang sangat mirip dengan:
val minimum = if (x < y) x else y
yang sudah kamu pelajari sebelumnya.
14. Bandingkan if expression dan when expression
if
val status = if (age >= 18) {
"Adult"
} else {
"Minor"
}
when
val message = when (number) {
1 -> "One"
2 -> "Two"
3 -> "Three"
else -> "Other"
}
Keduanya menghasilkan sebuah value.
Jadi:
if
↓
memilih value
↓
disimpan ke variable
dan:
when
↓
memilih value
↓
disimpan ke variable
15. when dengan banyak pilihan
Misalnya status login:
val status = "admin"
when (status) {
"admin" -> println("Welcome, Admin")
"user" -> println("Welcome, User")
"guest" -> println("Welcome, Guest")
else -> println("Unknown status")
}
Ini lebih mudah dibaca daripada:
if (status == "admin") {
...
} else if (status == "user") {
...
} else if (status == "guest") {
...
} else {
...
}
16. when bisa menjadi lebih powerful daripada contoh video
Video ini baru memperkenalkan bentuk dasar:
when (value) {
value1 -> ...
value2 -> ...
else -> ...
}
Tetapi nanti kamu akan menemukan bentuk when yang lebih fleksibel.
Misalnya kondisi:
val age = 20
when {
age < 13 -> println("Child")
age < 18 -> println("Teenager")
else -> println("Adult")
}
Di sini when tidak langsung membandingkan satu variable dengan nilai tertentu.
Setiap branch adalah Boolean condition.
Tapi untuk sekarang, jangan buru-buru. Kuasai dulu bentuk dasar:
when (value) {
case1 -> result1
case2 -> result2
else -> defaultResult
}
17. Hubungan when dengan materi sebelumnya
Sekarang kamu sudah mempunyai beberapa alat untuk mengontrol alur program.
if
Digunakan untuk:
Kalau kondisi ini benar, lakukan ini.
if (age >= 18) {
println("Adult")
}
if / else
Kalau benar lakukan A, kalau tidak lakukan B.
if (age >= 18) {
println("Adult")
} else {
println("Minor")
}
else if
Coba kondisi berikutnya kalau kondisi sebelumnya gagal.
if (score >= 90) {
println("A")
} else if (score >= 80) {
println("B")
} else {
println("C")
}
when
Pilih branch berdasarkan beberapa kemungkinan.
when (score) {
100 -> println("Perfect")
90 -> println("Excellent")
80 -> println("Good")
else -> println("Keep learning")
}
18. when + beberapa nilai
Misalnya:
val month = 1
when (month) {
1, 2, 3 -> println("First quarter")
4, 5, 6 -> println("Second quarter")
7, 8, 9 -> println("Third quarter")
10, 11, 12 -> println("Fourth quarter")
else -> println("Invalid month")
}
Di sini:
1, 2, 3 → First quarter
4, 5, 6 → Second quarter
7, 8, 9 → Third quarter
10, 11, 12 → Fourth quarter
Perhatikan bahwa beberapa case dapat diarahkan ke satu branch yang sama.
19. Kesalahan pemahaman yang perlu dihindari
❌ when hanya untuk angka
Tidak.
Bisa untuk String:
when (name) {
"Andi" -> println("Hello Andi")
"Budi" -> println("Hello Budi")
}
Dan berbagai tipe/kondisi lainnya.
❌ Harus menggunakan break
Tidak.
when (number) {
1 -> println("One")
2 -> println("Two")
}
Tidak perlu:
break
❌ else adalah kondisi lain
Lebih tepat:
elseadalah fallback/default branch ketika tidak ada branch sebelumnya yang cocok.
❌ when hanya untuk menggantikan semua if
Tidak selalu.
when sangat cocok ketika kamu mempunyai beberapa kemungkinan yang jelas.
Misalnya:
when (command) {
"start" -> ...
"stop" -> ...
"pause" -> ...
"restart" -> ...
}
Tetapi untuk kondisi sederhana:
if (age >= 18)
if biasanya lebih natural.
20. Koreksi beberapa bagian subtitle
Ada beberapa kesalahan/penyederhanaan dari transcript.
1. “constant”
Video mengatakan variable atau constant.
Untuk pemahaman kita sekarang, cukup pikirkan bahwa when bisa memeriksa nilai sebuah expression.
Contoh:
when (number)
2. “diamond shape / flash”
Yang dimaksud adalah:
->
Nama yang umum untuk -> adalah arrow.
Misalnya:
1 -> println("One")
3. “when seperti is”
Subtitle agak membingungkan di bagian ini.
when bukan berarti sama dengan is.
when adalah konstruksi control flow.
Sedangkan is digunakan untuk melakukan type check, misalnya:
if (value is String) {
...
}
Nanti kamu akan belajar ini.
4. “else configuration”
Lebih tepat menyebutnya:
elsebranch padawhen
5. “apostrophe”
Video kemungkinan menyebut tanda pemisah beberapa pilihan.
Yang digunakan sebenarnya adalah comma/koma:
"Udemy", "YouTube", "Coursera" ->
Bukan apostrophe '.
Ingat:
' ' → single quote
" " → double quote
, → comma/koma
21. Mental model paling mudah
Bayangkan when sebagai petugas yang melihat sebuah nilai.
Misalnya:
val command = "start"
Petugas berkata:
WHEN command:
command == "start"?
↓
YA → jalankan start
command == "stop"?
↓
YA → jalankan stop
command == "pause"?
↓
YA → jalankan pause
tidak ada yang cocok?
↓
ELSE
Dalam Kotlin:
when (command) {
"start" -> println("Starting...")
"stop" -> println("Stopping...")
"pause" -> println("Paused")
else -> println("Unknown command")
}
22. Hubungkan semuanya
Sekarang coba lihat perjalanan materi kita:
Comparison
↓
true / false
↓
Boolean
↓
if / else
Kemudian:
Multiple possibilities
↓
when
↓
pilih branch yang cocok
Sedangkan loop:
while / for
↓
mengulang kode
dan:
break
↓
keluar dari loop
continue
↓
skip iterasi sekarang
Jadi fungsi masing-masing:
| Keyword | Fungsi sederhana |
|---|---|
if | memilih berdasarkan kondisi |
else | fallback dari if |
else if | mengecek kondisi tambahan |
when | memilih berdasarkan beberapa kemungkinan |
for | mengulang berdasarkan range/collection |
while | mengulang selama kondisi true |
do...while | jalankan minimal sekali, lalu cek |
break | keluar dari loop |
continue | skip iterasi sekarang |
23. Contoh final yang bagus untuk latihan
Coba perhatikan program ini:
fun main() {
val number = 3
when (number) {
1 -> println("One")
2 -> println("Two")
3 -> println("Three")
4, 5 -> println("Four or Five")
else -> println("Other number")
}
}
Kalau:
number = 3
hasil:
Three
Kalau:
number = 5
hasil:
Four or Five
Kalau:
number = 10
hasil:
Other number
Kesimpulan
Materi inti hari ini sebenarnya sederhana:
when (value) {
case1 -> action1
case2 -> action2
case3 -> action3
else -> defaultAction
}
Bacanya:
“Ketika value bernilai case1, lakukan action1. Ketika case2, lakukan action2. Kalau tidak ada yang cocok, lakukan
else.”
Dan karena when adalah expression, hasilnya juga bisa langsung dimasukkan ke variable:
val result = when (number) {
1 -> "One"
2 -> "Two"
else -> "Other"
}
Jadi mental model yang paling penting:
when
↓
periksa value
↓
┌──────────┼──────────┐
↓ ↓ ↓
case 1 case 2 case 3
↓ ↓ ↓
aksi 1 aksi 2 aksi 3
│
tidak cocok?
↓
else
if cocok untuk “apakah kondisi ini benar?”, sedangkan when sangat nyaman untuk “dari beberapa kemungkinan ini, mana yang cocok?”.