Pattern Matching di Scala
Penjelasan
Pattern matching (`match`/`case`) adalah salah satu fitur paling kuat di Scala — jauh lebih fleksibel dari `switch` biasa. Selain mencocokkan nilai literal, pattern matching bisa mencocokkan tipe data, mendekonstruksi case class (mengambil field-nya langsung), dan punya kondisi tambahan (guard) lewat `if`.
Contoh Konsep
def deskripsi(x: Any): String = x match {
case 0 => "nol"
case n: Int if n > 0 => "angka positif"
case n: Int => "angka negatif"
case s: String => "teks: " + s
case _ => "tidak dikenal" // default, seperti 'else'
}
case class Titik(x: Int, y: Int)
val titik = Titik(0, 5)
titik match {
case Titik(0, 0) => println("Titik origin")
case Titik(0, y) => println(s"Di sumbu Y, nilainya $y") // dekonstruksi field
case _ => println("Titik lainnya")
}
Praktikum
Buat fungsi kategori(nilai: Int): String yang memakai match/case dengan guard (if) untuk mengembalikan "A" (>= 85), "B" (>= 70), atau "C" (selain itu).
Ketik/edit bebas di sini untuk latihan — kode ini tidak dijalankan.
Tips
Selalu sertakan case `_` sebagai default kalau kemungkinan nilainya tidak bisa dipastikan mencakup semua kasus — tanpa itu, `match` bisa melempar `MatchError` saat runtime kalau tidak ada case yang cocok.