0Pricing
Scala for Backend Engineering & Functional Programming · Ders

Tür Sınıfı Türetme

Otomatik örnekler

Tür Sınıfı Türetme, CoddyKit'te ücretsiz bir Scala for Backend Engineering & Functional Programming dersidir. Bu, 4 dersinin 4. 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.

Türetme Nedir?

Tür sınıfı türetme, bir türün yapısından otomatik olarak örnekler oluşturur; böylece her vaka sınıfı için kalıp kodu elle yazmanız gerekmez. Derleyici, örneği alanlarından oluşturur.

Kalıp Kod Sorunu

Türetme olmadan her yeni vaka sınıfı için elle bir örnek gerekir. Yirmi vaka sınıfı üzerinde bir Show için bu, neredeyse aynı yirmi tanım demektir. Türetme bu tekrarı ortadan kaldırır.

Önce Elle Birleştirme

Otomatik türetmeden önce, örnekleri alan örneklerinden elle birleştirebileceğinizi unutmayın. Türetmenin otomatikleştirdiği temel ilke budur.

trait Show[A] { def show(a: A): String }

case class User(name: String, age: Int)

object Main {
  implicit val strShow: Show[String] = s => s
  implicit val intShow: Show[Int] = _.toString

  implicit val userShow: Show[User] = (u: User) =>
    s"User(${strShow.show(u.name)}, ${intShow.show(u.age)})"

  def main(args: Array[String]): Unit = {
    println(userShow.show(User("Ann", 30)))
  }
}

Tümevarımsal Örnekler

Türetme tümevarımsal olarak çalışır: ilkel türler için örnekler tanımlanır, ardından bunlar çarpımlar (vaka sınıfları) ve toplamlar (mühürlü trait'ler) için birleştirilir. Türetilmiş bir örnek, parçalarından oluşturulur.

Scala 3 derives Anahtar Sözcüğü

Scala 3, derives yan tümcesini destekler. derived yöntemine sahip bir tür sınıfı, tek bir anahtar sözcükle bir türe bağlanabilir. (Kavramsal bir kod parçasıdır; türetilebilir bir tür sınıfı gerektirir.)

enum Color derives CanEqual:
  case Red, Green, Blue

@main def run(): Unit =
  println(Color.Red == Color.Red)

Mirror Tabanlı Türetme

Scala 3 türetimi, bir türün yapısını (alan türlerini ve adlarını) derleme zamanında açığa çıkaran scala.deriving.Mirror öğesini kullanır. Bir derived yöntemi, bütün yapıyı oluşturmak için ayna öğelerinin örnekleri üzerinde katlama işlemi yapar.

Yarı Otomatik Türetim

Cats gibi kütüphaneler yarı otomatik türetim sunar: deriveShow gibi tek satırlık bir ifadeyle her tür için açıkça etkinleştirirsiniz. Böylece derleme süreleri öngörülebilir kalırken gereksiz tekrarlar ortadan kalkar.

Otomatik ve Yarı Otomatik

İki yaklaşım vardır:

  • Otomatik: Örnekler, örtük bir içe aktarma aracılığıyla ihtiyaç duyulan her yerde ortaya çıkar; kullanışlıdır ancak derlemeyi yavaşlatabilir.
  • Yarı otomatik: Her tür için açıkça tek bir türetme çağrısı yazarsınız; denetim daha fazladır ve derlemeler daha hızlıdır.

Mühürlü Özellikler İçin Türetim

Mühürlü bir hiyerarşide (toplam türünde), türetilmiş bir örnek, bir değerin hangi alt türde olduğuna göre yönlendirme yapar. Buradaki elle yazılmış sürüm, türetimin otomatikleştirdiği fikri gösterir.

trait Show[A] { def show(a: A): String }

sealed trait Shape
case class Circle(r: Int) extends Shape
case class Square(s: Int) extends Shape

object Main {
  implicit val shapeShow: Show[Shape] = {
    case Circle(r) => s"Circle($r)"
    case Square(s) => s"Square($s)"
  }

  def main(args: Array[String]): Unit = {
    println(shapeShow.show(Circle(5)))
    println(shapeShow.show(Square(3)))
  }
}

Türetim Ne Zaman Kullanılmalı

Şu durumlarda türetimi tercih edin:

  • Aynı tür sınıfına ihtiyaç duyan çok sayıda veri türünüz varsa (JSON kodlayıcıları, Show, Eq).
  • Örnek, yapıdan mekanik olarak çıkarılabiliyorsa.

Davranış özelse veya performans kritik önem taşıyorsa örnekleri elle yazın.

Genel Bir Eşitlik Örneği

Eşitlik, türetilebilen klasik bir tür sınıfıdır. Durum sınıflarındaki standart == işleci de derleyicinin sizin için oluşturduğu bir tür yapısal eşitliktir.

case class Coord(x: Int, y: Int)

object Main {
  def main(args: Array[String]): Unit = {
    println(Coord(1, 2) == Coord(1, 2))
    println(Coord(1, 2) == Coord(3, 4))
  }
}

Hızlı Kontrol

Türetim konusundaki anlayışınızı sınayın.

Özet

Tür sınıfı türetimini öğrendiniz:

  • Örnekler, alan veya durum örneklerinden tümevarımsal olarak oluşturulur.
  • Scala 3, Mirror ve derives anahtar sözcüğünü kullanır.
  • Kolaylık için otomatik, denetim için yarı otomatik yaklaşımı seçin.
  • Birçok veri türündeki gereksiz tekrarları ortadan kaldırmak için kullanın.

Sıkça Sorulan Sorular

“Tür Sınıfı Türetme” dersi ücretsiz mi?

Evet — “Tür Sınıfı Türetme” 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.

“Tür Sınıfı Türetme” dersinde ne öğreneceğim?

Otomatik örnekler 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 4. dersidir.

“Tür Sınıfı Türetme” 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. Tür Sınıfı Örüntüsü
  2. Örnekler Tanımlama
  3. Yaygın Tür Sınıfları
  4. Tür Sınıfı Türetme
← Scala for Backend Engineering & Functional Programming Sayfasına Dön