0Pricing
Scala for Backend Engineering & Functional Programming · Ders

Tür Çıkarımı

Türleri derleyicinin belirlemesini sağlayın.

Tür Çıkarımı, 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.

Tür Çıkarımı Nedir?

Scala statik türlemeye sahiptir; yine de türleri nadiren kendiniz yazmanız gerekir. Derleyici, türleri sağ taraftaki değerden çıkarır.

Bu, dinamik bir dilin kısalığıyla türlerin güvenliğini bir arada sunar.

val n = 42        // inferred Int
val label = "hi" // inferred String

Değişmezlerden Çıkarım

val x = 5 yazdığınızda derleyici Int değişmezini görür ve x'e Int türünü verir.

Ondalık bir değişmez Double'a, tırnak içindeki metin ise String'e dönüşür.

object Main extends App {
  val count = 5
  val ratio = 1.5
  println(count + ratio)
}

İşlev Dönüşleri İçin Çıkarım

Derleyici, bir yöntemin dönüş türünü gövdesinden de çıkarabilir.

Burada square, gövdesi iki Int değerini çarptığı için bir Int döndürür. Bunu belirtmeniz gerekmedi.

object Main extends App {
  def square(x: Int) = x * x
  println(square(6))
}

Parametrelerin Türleri Yine de Gerekir

Çıkarımın sınırları vardır. Yöntem parametrelerine tür açıklaması eklenmelidir; çünkü derleyicinin bunları çıkarabileceği bir bilgi yoktur.

Aşağıdaki kod parçası, x üzerindeki : Int olmadan derlenmez.

def increment(x: Int) = x + 1 // type on x is required

Çıkarılan Ortak Tür

Değerler birden çok türden olabildiğinde Scala, en belirli ortak türü çıkarır.

Aritmetikte bir Int ile bir Double'ı karıştırmak, sonucu Double'a genişletir.

object Main extends App {
  val mixed = 3 + 2.0  // Double
  println(mixed)
}

Koleksiyonlarda Çıkarım

Koleksiyonlar, öğe türlerini içine koyduğunuz değerlerden çıkarır.

Tamsayılardan oluşan bir liste otomatik olarak List[Int] olur; böylece açıklama yazmadan tam tür güvenliğini korursunuz.

object Main extends App {
  val nums = List(1, 2, 3) // List[Int]
  println(nums.sum)
}

Çıkarımın Sizi Şaşırttığı Durumlar

Bazen çıkarım, istediğinizden daha geniş bir tür seçer. Karışık sayılardan oluşan bir liste List[Double] veya hatta List[AnyVal] olarak çıkarılabilir.

Çıkarılan tür ihtiyaçlarınıza uygun değilse açık bir tür açıklaması ekleyin.

val a = List(1, 2.0)        // List[Double]
val b = List(1, "two")     // List[Any]

Açıklamalarla Geçersiz Kılma

İstediğiniz zaman açıkça belirtebilirsiniz. Tür açıklaması hem amacınızı belgeler hem de fazla dar bir çıkarımı geçersiz kılar.

Burada 7 değişmezi bilerek Long'a genişletilir.

val seconds: Long = 7
val data: List[Int] = List(1, 2, 3)

Genel API'ler: Açık Olun

Yaygın bir stil kuralı şudur: yerel val'ler için çıkarımı kullanın, ancak genel yöntemlerde açık dönüş türleri yazın.

Bu, uygulama değişse bile kitaplığınızın sözleşmesini sabit tutar.

def total(items: List[Int]): Int = items.sum

Çıkarım Tür Güvenliğini Korur

Çıkarım, tür sistemini zayıflatmaz. Derleyici geçersiz işlemleri yine reddeder.

Aşağıda name, String olarak çıkarılır; bu nedenle onu bir sayıyla çarpmak, olması gerektiği gibi derleme hatasına yol açar.

val name = "Lia"
val bad = name * 3 // error: value * is not a member of String in this sense

Çıkarılan val Yine Değişmezdir

Çıkarım yalnızca türü tamamlar. Bir bağın değişken olup olmadığını değiştirmez.

val n = 10 yine değişmezdir ve Int olarak sabitlenmiştir; derleyici sizi yalnızca : Int yazmaktan kurtarmıştır.

object Main extends App {
  val n = 10 // inferred Int, still a val
  println(n * n)
}

Kısa Test

Scala hangi durumda yine de bir tür yazmanızı gerektirir?

Özet

Tür çıkarımı, statik güvenliği kaybetmeden Scala'nın kısa ve öz kalmasını sağlar.

  • Yerel val değişkenlerinin türleri ve dönüş türleri genellikle çıkarılır.
  • Yöntem parametreleri açıklanmalıdır.
  • Çıkarım, ortak türlerin en özgül olanını seçer.
  • Genel API'ler için veya şaşırtıcı tür çıkarımını geçersiz kılmak istediğinizde türü açıkça belirtin.

Sıkça Sorulan Sorular

“Tür Çıkarımı” dersi ücretsiz mi?

Evet — “Tür Çıkarımı” 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 Çıkarımı” dersinde ne öğreneceğim?

Türleri derleyicinin belirlemesini sağlayın. 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.

“Tür Çıkarımı” 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. val ve var
  2. Temel Türler ve Değişmezler
  3. Tür Çıkarımı
  4. İfadeler ve Bildirimler
← Scala for Backend Engineering & Functional Programming Sayfasına Dön