0Pricing
Scala for Backend Engineering & Functional Programming · Ders

Değer Olarak İşlevler

Birinci sınıf işlevler

Değer Olarak İşlevler, 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.

İşlevler değerdir

Scala'da işlevler birinci sınıf değerlerdir. Bunları değişkenlerde saklayabilir, bağımsız değişken olarak iletebilir ve tıpkı sayılar veya dizeler gibi diğer işlevlerden döndürebilirsiniz.

object Main {
  def main(args: Array[String]): Unit = {
    val increment: Int => Int = x => x + 1
    println(increment(5))
  }
}

İşlev türü söz dizimi

Int => String türü, bir Int alan ve bir String döndüren işlev anlamına gelir. Birden çok parametre parantez kullanır: (Int, Int) => Int.

object Main {
  def main(args: Array[String]): Unit = {
    val add: (Int, Int) => Int = (a, b) => a + b
    val label: Int => String = n => s"value=$n"
    println(add(3, 4))
    println(label(7))
  }
}

Lambda (anonim işlev) söz dizimi

Anonim işlev veya lambda, (params) => body şeklinde yazılır. Bir adı yoktur ve çoğunlukla doğrudan başka bir işleve iletilir.

object Main {
  def main(args: Array[String]): Unit = {
    val square = (x: Int) => x * x
    println(square(6))
  }
}

Üst düzey işlevler

Üst düzey işlev, parametre olarak bir işlev alan veya bir işlev döndüren işlevdir. map ve filter klasik örneklerdir.

object Main {
  def applyTwice(f: Int => Int, x: Int): Int = f(f(x))
  def main(args: Array[String]): Unit = {
    println(applyTwice(_ + 3, 10))
  }
}

İşlevleri yöntemlere iletme

Koleksiyon yöntemleri işlevleri kabul eder. Bir lambdayı satır içinde veya adlandırılmış bir işlev değeri olarak iletebilirsiniz.

object Main {
  def main(args: Array[String]): Unit = {
    val triple = (x: Int) => x * 3
    println(List(1, 2, 3).map(triple))
    println(List(1, 2, 3).map(x => x * 3))
  }
}

İşlev döndürme

Bir işlev başka bir işlev döndürebilir. Burada multiplier, sabit bir katsayıyla çarpma yapan bir işlev döndürür; bu küçük bir işlev fabrikasıdır.

object Main {
  def multiplier(factor: Int): Int => Int = x => x * factor
  def main(args: Array[String]): Unit = {
    val timesTen = multiplier(10)
    println(timesTen(5))
  }
}

Yöntemler ve işlevler

Bir def, bir yöntem tanımlar. Eta genişletme alt çizgisiyle bir yöntemi işlev değerine dönüştürebilirsiniz: methodName _; veya işlev beklenen bir yerde yöntemi doğrudan kullanabilirsiniz.

object Main {
  def doubleIt(x: Int): Int = x * 2
  def main(args: Array[String]): Unit = {
    val f: Int => Int = doubleIt
    println(f(8))
    println(List(1, 2, 3).map(doubleIt))
  }
}

Parametresiz işlevler

Bir işlev hiç bağımsız değişken almayabilir. Türü () => T şeklinde yazılır. Bu, hesaplamayı ertelemek için kullanışlıdır.

object Main {
  def main(args: Array[String]): Unit = {
    val greeting: () => String = () => "Hello!"
    println(greeting())
  }
}

İşlevleri koleksiyonlarda saklama

İşlevler değer olduğundan bunları listelerde veya eşlemlerde saklayabilir ve dinamik olarak arayabilirsiniz; böylece küçük bir komut yönlendirici oluşturabilirsiniz.

object Main {
  def main(args: Array[String]): Unit = {
    val ops: Map[String, (Int, Int) => Int] = Map(
      "add" -> (_ + _),
      "mul" -> (_ * _)
    )
    println(ops("add")(3, 4))
    println(ops("mul")(3, 4))
  }
}

Yapılandırma olarak işlevler

Bir işlev iletmek, çağıranların davranışı özelleştirmesine olanak tanır. Burada genel transformAll, bir liste boyunca herhangi bir işlevi uygular.

object Main {
  def transformAll(xs: List[Int], f: Int => Int): List[Int] = xs.map(f)
  def main(args: Array[String]): Unit = {
    println(transformAll(List(1, 2, 3), _ + 100))
    println(transformAll(List(1, 2, 3), _ * 10))
  }
}

Daha temiz bir özelleştirme örneği

Aynı fikir burada daha temiz biçimde yazılmıştır: çağıranlar dönüşümü sağlar; yardımcı işlev genel ve yeniden kullanılabilir kalır.

object Main {
  def transformAll(xs: List[Int], f: Int => Int): List[Int] = xs.map(f)
  def main(args: Array[String]): Unit = {
    println(transformAll(List(1, 2, 3), x => x + 100))
    println(transformAll(List(1, 2, 3), x => x * x))
  }
}

Kısa Kontrol

Üst düzey işlev nedir?

Özet

İşlevlerin birinci sınıf değerler olduğunu öğrendiniz:

  • İşlevleri val'larda, listelerde ve eşlemlerde saklama
  • Int => String gibi işlev türleri
  • Lambdalar: (x) => body ve _ kısaltması
  • Üst düzey işlevler işlev alır veya döndürür
  • Yöntemler eta genişletmeyle işlev değerlerine dönüşür

Sıkça Sorulan Sorular

“Değer Olarak İşlevler” dersi ücretsiz mi?

Evet — “Değer Olarak İşlevler” 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.

“Değer Olarak İşlevler” dersinde ne öğreneceğim?

Birinci sınıf işlevler 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.

“Değer Olarak İşlevler” 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. Değer Olarak İşlevler
  2. Currying
  3. Birleştirme
  4. Kapanımlar
← Scala for Backend Engineering & Functional Programming Sayfasına Dön