0Pricing
Scala for Backend Engineering & Functional Programming · Pelajaran

Case Class

Pembawa data immutable.

Case Class adalah pelajaran Scala for Backend Engineering & Functional Programming gratis di CoddyKit. Ini adalah pelajaran 1 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar Scala for Backend Engineering & Functional Programming, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Scala for Backend Engineering & Functional Programming mencakup 4 pelajaran total.

Apa Itu Case Class?

Case class adalah jenis khusus class yang dirancang untuk menyimpan data immutable. Anda mendeklarasikannya dengan case class.

Scala secara otomatis menghasilkan banyak kode yang berguna, sehingga case class menjadi cara utama untuk memodelkan data.

Mendeklarasikan Case Class

Cukup cantumkan field dalam daftar parameter. Setiap parameter menjadi field immutable.

Kata kunci new tidak diperlukan untuk membuat instance.

case class Point(x: Int, y: Int)
object Main {
  def main(args: Array[String]): Unit = {
    val p = Point(3, 4)
    println(p.x)
    println(p.y)
  }
}

toString Otomatis

Case class mendapatkan toString yang mudah dibaca secara otomatis, yang menampilkan nama class dan nilai field.

Hal ini membuat proses debug dan pencatatan menjadi mudah.

case class Point(x: Int, y: Int)
object Main {
  def main(args: Array[String]): Unit = {
    val p = Point(1, 2)
    println(p)
  }
}

Kesetaraan Berdasarkan Nilai

Case class dibandingkan berdasarkan nilai, bukan referensi. Dua instance dengan field yang sama dianggap setara.

Class biasa justru dibandingkan berdasarkan identitas.

case class Point(x: Int, y: Int)
object Main {
  def main(args: Array[String]): Unit = {
    val a = Point(1, 2)
    val b = Point(1, 2)
    println(a == b)
  }
}

Field Immutable

Field case class secara bawaan berupa val, sehingga tidak dapat ditetapkan ulang.

Untuk mendapatkan versi yang telah diubah, Anda membuat instance baru, bukan mengubah instance lama.

case class Point(x: Int, y: Int)
object Main {
  def main(args: Array[String]): Unit = {
    val p = Point(1, 2)
    println(p.x)
  }
}

Metode copy

Setiap case class memiliki metode copy. Metode ini membuat instance baru dan memungkinkan Anda mengubah hanya field yang Anda sebutkan.

Inilah cara idiomatis untuk memperbarui data immutable.

case class Point(x: Int, y: Int)
object Main {
  def main(args: Array[String]): Unit = {
    val p = Point(1, 2)
    val moved = p.copy(y = 99)
    println(p)
    println(moved)
  }
}

Dukungan Pencocokan Pola

Case class bekerja secara mulus dengan match. Anda dapat mendekonstruksinya dengan menamai field-fieldnya dalam sebuah pola.

Inilah salah satu alasan utama untuk menggunakannya.

case class Point(x: Int, y: Int)
object Main {
  def describe(p: Point): String = p match {
    case Point(0, 0) => "origin"
    case Point(x, 0) => s"on x-axis at $x"
    case Point(x, y) => s"point ($x, $y)"
  }
  def main(args: Array[String]): Unit = {
    println(describe(Point(0, 0)))
    println(describe(Point(5, 0)))
    println(describe(Point(2, 3)))
  }
}

Nilai Parameter Bawaan

Seperti class biasa, case class dapat memiliki nilai bawaan untuk parameter, sehingga Anda dapat mengabaikannya saat membuat instance.

case class User(name: String, active: Boolean = true)
object Main {
  def main(args: Array[String]): Unit = {
    val u1 = User("Ada")
    val u2 = User("Bo", false)
    println(u1)
    println(u2)
  }
}

Menambahkan Metode

Case class dapat memiliki metodenya sendiri di dalam isi class, sama seperti class apa pun. Metode tersebut beroperasi pada field immutable.

case class Rect(w: Int, h: Int) {
  def area: Int = w * h
}
object Main {
  def main(args: Array[String]): Unit = {
    val r = Rect(3, 4)
    println(r.area)
  }
}

Mengapa Case Class?

Case class menyediakan hal-hal berikut secara otomatis:

  • Konstruktor ringkas dengan field immutable
  • toString yang mudah dibaca
  • equals dan hashCode berbasis nilai
  • Metode copy
  • Pencocokan pola sebagai fitur utama

Case class merupakan fondasi pemodelan data dalam Scala.

Menggabungkan Semuanya

Di sini sebuah case class dibuat, disalin, dibandingkan, dan dicocokkan polanya dalam satu contoh.

case class Money(amount: Int, currency: String)
object Main {
  def main(args: Array[String]): Unit = {
    val price = Money(10, "USD")
    val sale = price.copy(amount = 8)
    println(price == sale)
    sale match {
      case Money(a, "USD") => println(s"$a dollars")
      case Money(a, c)     => println(s"$a $c")
    }
  }
}

Pemeriksaan Singkat

Uji pemahaman Anda tentang case class.

Rangkuman

Anda telah mempelajari bahwa kelas case memodelkan data yang tidak dapat diubah, dengan bantuan yang dibuat secara otomatis:

  • Dibuat tanpa new; field berupa val yang tidak dapat diubah
  • toString gratis, serta equals/hashCode berbasis nilai
  • copy membuat salinan yang telah dimodifikasi
  • Dukungan bawaan untuk pencocokan pola
  • Nilai default dan metode khusus diperbolehkan

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Case Class” gratis?

Ya — teks lengkap “Case Class” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus Scala for Backend Engineering & Functional Programming, upgrade ke CoddyKit PRO. Kursus Scala for Backend Engineering & Functional Programming mencakup 4 pelajaran total.

Apa yang akan aku pelajari di “Case Class”?

Pembawa data immutable. Kamu berlatih Scala for Backend Engineering & Functional Programming dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.

Apakah aku perlu pengalaman untuk memulai Scala for Backend Engineering & Functional Programming?

Tidak diperlukan pengalaman sebelumnya. Scala for Backend Engineering & Functional Programming di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 1 dari 4.

Berapa lama pelajaran “Case Class” memakan waktu?

Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.

Bisakah aku menulis dan menjalankan kode dalam pelajaran Scala for Backend Engineering & Functional Programming ini?

Ya. Setiap pelajaran Scala for Backend Engineering & Functional Programming menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.

Semua pelajaran dalam kursus ini

  1. Case Class
  2. Trait Sealed
  3. Tipe Data Aljabar
  4. Pencocokan Menyeluruh
← Kembali ke Scala for Backend Engineering & Functional Programming