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ı
equalsvehashCode - Bir
copyyö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:
newkullanmadan oluşturulur; alanlar değişmezvaldeğ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.