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.Showtarzı oluşturma (özel bir uygulama veya Cats'inShow'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,maxveminişlemlerini yönetir;Ordering.byile oluşturulur.Numeric[A], genel aritmetiği mümkün kılar vesumişlemini destekler.Showtarzı 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
- Tür Sınıfı Örüntüsü
- Örnekler Tanımlama
- Yaygın Tür Sınıfları
- Tür Sınıfı Türetme