0Pricing
Scala for Backend Engineering & Functional Programming · Ders

Case Sınıfları

Değiştirilemez veri taşıyıcıları

Case Sınıfları, CoddyKit'te ücretsiz bir Scala for Backend Engineering & Functional Programming dersidir. Bu, 4 dersinin 1. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, Scala for Backend Engineering & Functional Programming öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. Scala for Backend Engineering & Functional Programming kursu toplamda 4 dersten oluşur.

Durum Sınıfı Nedir?

Durum sınıfı, değişmez verileri tutmak üzere tasarlanmış özel bir sınıf türüdür. Bunu case class ile tanımlarsınız.

Scala sizin için otomatik olarak birçok kullanışlı kod üretir; bu nedenle durum sınıfları veri modellemenin başlıca yoludur.

Bir Durum Sınıfı Bildirme

Parametre listesinde alanları listelemeniz yeterlidir. Her parametre değişmez bir alan olur.

Bir örnek oluşturmak için new anahtar sözcüğü gerekmez.

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)
  }
}

Otomatik toString

Durum sınıfları, sınıf adını ve alan değerlerini gösteren okunabilir bir toString yöntemine ücretsiz olarak sahip olur.

Bu, hata ayıklama ve günlük kaydı tutma işlemlerini zahmetsiz hâle getirir.

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

Değer Eşitliği

Durum sınıfları başvuruyla değil, değerle karşılaştırılır. Alanları aynı olan iki örnek eşittir.

Normal sınıflar bunun yerine kimliklerine göre karşılaştırılır.

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)
  }
}

Değişmez Alanlar

Durum sınıfı alanları varsayılan olarak val'dır; bu nedenle yeniden atanamazlar.

Değiştirilmiş bir sürüm elde etmek için eskisini değiştirmek yerine yeni bir örnek oluşturursunuz.

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

copy Yöntemi

Her durum sınıfının bir copy yöntemi vardır. Bu yöntem yeni bir örnek oluşturur ve yalnızca adını verdiğiniz alanları değiştirmenizi sağlar.

Değişmez verileri güncellemenin Scala'ya özgü yolu budur.

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)
  }
}

Desen Eşleştirme Desteği

Durum sınıfları match ile sorunsuz çalışır. Alanlarına desen içinde ad vererek onları ayrıştırabilirsiniz.

Onları kullanmanın en önemli nedenlerinden biri budur.

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)))
  }
}

Varsayılan Parametre Değerleri

Normal sınıflar gibi durum sınıfları da parametreler için varsayılan değerlere sahip olabilir; böylece oluşturma sırasında bunları atlayabilirsiniz.

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)
  }
}

Yöntem Ekleme

Bir durum sınıfının gövdesinde, her sınıfta olduğu gibi kendine ait yöntemleri olabilir. Bu yöntemler değişmez alanlar üzerinde çalışır.

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)
  }
}

Durum Sınıfları Neden Kullanılır?

Durum sınıfları size ücretsiz olarak şunları sunar:

  • Değişmez alanlara sahip kısa bir oluşturucu
  • Okunabilir toString
  • Değere dayalı equals ve hashCode
  • Bir copy yöntemi
  • Birinci sınıf desen eşleştirme

Scala'da veri modellemenin temelini oluştururlar.

Hepsini Bir Araya Getirme

Buradaki tek örnekte bir durum sınıfı oluşturuluyor, kopyalanıyor, karşılaştırılıyor ve desenle eşleştiriliyor.

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")
    }
  }
}

Kısa Kontrol

Durum sınıflarını ne kadar anladığınızı test edin.

Özet

case class türünün, oluşturulan yardımcılarla değişmez verileri modellediğini öğrendiniz:

  • new kullanmadan oluşturulur; alanlar değişmez val değerleridir
  • Ücretsiz toString, değere dayalı equals/hashCode
  • copy, değiştirilmiş kopyalar oluşturur
  • Kalıp eşleştirme için yerleşik destek
  • Varsayılan değerlere ve özel yöntemlere izin verilir

Sıkça Sorulan Sorular

“Case Sınıfları” dersi ücretsiz mi?

Evet — “Case Sınıfları” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve Scala for Backend Engineering & Functional Programming kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. Scala for Backend Engineering & Functional Programming kursu toplamda 4 dersten oluşur.

“Case Sınıfları” dersinde ne öğreneceğim?

Değiştirilemez veri taşıyıcıları Scala for Backend Engineering & Functional Programming ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.

Scala for Backend Engineering & Functional Programming öğrenmeye başlamak için deneyim gerekli mi?

Önceden deneyim gerekmez. CoddyKit'te Scala for Backend Engineering & Functional Programming, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 1. dersidir.

“Case Sınıfları” dersi ne kadar sürer?

Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.

Bu Scala for Backend Engineering & Functional Programming dersinde kod yazıp çalıştırabilir miyim?

Evet. Her Scala for Backend Engineering & Functional Programming dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.

Bu kursun tüm dersleri

  1. Case Sınıfları
  2. Mühürlü Trait'ler
  3. Cebirsel Veri Türleri
  4. Eksiksiz Eşleştirme
← Scala for Backend Engineering & Functional Programming Sayfasına Dön