0Pricing
Scala for Backend Engineering & Functional Programming · Ders

Yaygın Tür Sınıfları

Show, Ordering, Numeric

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

Standart Tür Sınıfları

Scala'nın standart kütüphanesi, bazen farkına bile varmadan her gün kullandığınız çeşitli tür sınıfları sağlar:

  • Ordering[A] — değerlerin nasıl karşılaştırılacağını belirler.
  • Numeric[A] — sayılar üzerinde aritmetik işlemler sağlar.
  • Show tarzı oluşturma (özel bir uygulama veya Cats'in Show'u).

Ordering, sorted'a Güç Katar

List.sorted, örtük bir Ordering[A] gerektirir. Standart kütüphane; sayılar, dizeler ve daha fazlası için örnekler sağlar.

@main def run(): Unit = {
  println(List(3, 1, 2).sorted)
  println(List("pear", "apple", "fig").sorted)
}

Özel Ordering

Farklı bir sıralama yapmak için açık bir Ordering geçirin; örneğin azalan sırayla veya türetilmiş bir anahtara göre.

@main def run(): Unit = {
  val nums = List(3, 1, 2)
  println(nums.sorted(Ordering.Int.reverse))
  val words = List("bbb", "a", "cc")
  println(words.sortBy(_.length))
}

Vaka Sınıfları İçin Ordering

Kendi türünüz için bir Ordering örneği sağlayarak o türden oluşan koleksiyonların sıralanmasını mümkün kılın. Ordering.by, bir anahtardan Ordering türetir.

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

object Main {
  implicit val byAge: Ordering[Person] = Ordering.by(_.age)

  def main(args: Array[String]): Unit = {
    val people = List(Person("A", 30), Person("B", 20))
    println(people.sorted)
  }
}

Numeric ile Aritmetiği Soyutlama

Numeric[A], her tür sayıyla çalışan işlevler yazmanızı sağlar. Listedeki sum işlemi buna dayanır.

@main def run(): Unit = {
  println(List(1, 2, 3).sum)
  println(List(1.5, 2.5).sum)
}

Genel Sayısal Kod Yazma

[A: Numeric] içeren bir context bound ile herhangi bir sayısal türü genel biçimde toplayabilir veya çarpabilirsiniz. İşlemler için örneğin Numeric[A] içindeki yöntemleri kullanın.

object Main {
  def addAll[A: Numeric](xs: List[A]): A = {
    val num = implicitly[Numeric[A]]
    xs.foldLeft(num.zero)(num.plus)
  }

  def main(args: Array[String]): Unit = {
    println(addAll(List(1, 2, 3)))
    println(addAll(List(1.0, 2.0, 3.5)))
  }
}

Sayısal İşleçler

Örneğin Implicits'ini içe aktarmak, genel sayısal türlerde alışılmış işleçleri (+, *) kullanmanızı sağlar ve kodun doğal okunmasına yardımcı olur.

object Main {
  def square[A](a: A)(implicit num: Numeric[A]): A = {
    import num._
    a * a
  }

  def main(args: Array[String]): Unit = {
    println(square(5))
    println(square(2.5))
  }
}

Show Tür Sınıfı

Show, değerleri tür güvenli bir şekilde metne dönüştürür (her nesnede bulunan toString'den farklı olarak). Cats bunu sağlar; burada en küçük sürümü gösterilmektedir.

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

object Show {
  implicit val intShow: Show[Int] = n => s"Int($n)"
  def apply[A](implicit s: Show[A]): Show[A] = s
}

object Main {
  def main(args: Array[String]): Unit = {
    println(Show[Int].show(42))
  }
}

Ordering ve max/min

Koleksiyonlardaki max, min ve maxBy gibi yöntemlerin tümü arka planda Ordering kullanır.

@main def run(): Unit = {
  val xs = List(4, 9, 1, 7)
  println(xs.max)
  println(xs.min)
  println(List("a", "abc", "ab").maxBy(_.length))
}

Ordering'leri Birleştirme

Bir alana, ardından başka bir alana göre sıralama yapmak için bir demet üzerinde Ordering.by kullanarak bileşik sıralamalar oluşturabilirsiniz.

case class Rec(group: String, score: Int)

object Main {
  implicit val ord: Ordering[Rec] = Ordering.by(r => (r.group, -r.score))

  def main(args: Array[String]): Unit = {
    val data = List(Rec("b", 5), Rec("a", 1), Rec("a", 9))
    data.sorted.foreach(println)
  }
}

Burada Tür Sınıfları Neden Kullanılıyor?

Karşılaştırma ve aritmetik tür sınıfları olduğundan, yalnızca bir örnek sağlayarak aynı sorted veya sum işlemini yerleşik türlerinizde ve kendi türlerinizde kullanabilirsiniz. Bu, standart kütüphanenin özel durumlu çok biçimliliği kullanmasıdır.

Kısa Kontrol

Standart tür sınıfları bilginizi sınayın.

Özet

Yaygın standart tür sınıflarıyla tanıştınız:

  • Ordering[A], sorted, max ve min işlemlerini yönetir; Ordering.by ile oluşturulur.
  • Numeric[A], genel aritmetiği mümkün kılar ve sum işlemini destekler.
  • Show tarzı sınıflar, değerleri tür güvenli biçimde metne dönüştürür.

Sıkça Sorulan Sorular

“Yaygın Tür Sınıfları” dersi ücretsiz mi?

Evet — “Yaygın Tür 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.

“Yaygın Tür Sınıfları” dersinde ne öğreneceğim?

Show, Ordering, Numeric 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 3. dersidir.

“Yaygın Tür 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. 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