Scala for Backend Engineering & Functional Programming · Ders

Koleksiyonlarda İşlevsel İşlemler

Veri dönüştürme için eşleme, süzme, katlama ve indirgeme gibi yaygın işlevsel işlemlerde uzmanlaşın.

2. ders / 311 adım

Koleksiyonlarda İşlevsel İşlemler, CoddyKit'te ücretsiz bir Scala for Backend Engineering & Functional Programming dersidir. Bu, 3 dersinin 2. 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 3 dersten oluşur.

İşlevsel İşlemler: Neden Kullanılır?

Koleksiyonlar üzerindeki işlevsel işlemler, özgün koleksiyonu değiştirmeden verileri dönüştürmenize ve birleştirmenize yardımcı olur. Bu yaklaşım değişmezliği destekler ve kodunuzu okumayı ve test etmeyi kolaylaştırır.

map, filter, reduce ve fold gibi temel işlemleri inceleyeceğiz.

`map` ile Dönüştürme

map işlemi bir işlevi koleksiyonun her öğesine uygular ve dönüştürülmüş sonuçları içeren yeni bir koleksiyon döndürür. Özgün koleksiyon değişmeden kalır.

Bu örneği çalıştırmayı deneyin:

object Main {
  def main(args: Array[String]): Unit = {
    val numbers = List(1, 2, 3, 4)
    val doubled = numbers.map(n => n * 2)
    println(s"Original: $numbers")
    println(s"Doubled: $doubled")
  }
}

Farklı Türlerle `map`

map çok esnektir! Öğeleri tamamen farklı bir türe dönüştürebilirsiniz. Burada sayıları dizelere dönüştürüyor veya dize uzunluklarını alıyoruz.

Girdinin List[String] olmasına rağmen sonucun List[Int] olduğuna dikkat edin.

object Main {
  def main(args: Array[String]): Unit = {
    val names = List("Alice", "Bob", "Charlie")
    val lengths = names.map(name => name.length)
    println(s"Names: $names")
    println(s"Lengths: $lengths")
  }
}

`filter` ile Seçme

filter işlemi, yalnızca verilen koşulu (bir yüklem işlevini) sağlayan öğeleri içeren yeni bir koleksiyon oluşturur. İstenmeyen öğeleri "filtreler".

Çift sayıları bulalım:

object Main {
  def main(args: Array[String]): Unit = {
    val numbers = List(1, 2, 3, 4, 5, 6)
    val evens = numbers.filter(n => n % 2 == 0)
    println(s"Original: $numbers")
    println(s"Evens: $evens")
  }
}

Daha Fazla `filter` Örneği

Filtre koşulunuz olarak herhangi bir mantıksal ifade kullanabilirsiniz. Yalnızca 4 karakterden uzun olanları tutmak için bir sözcük listesini filtreleyelim.

object Main {
  def main(args: Array[String]): Unit = {
    val words = List("apple", "cat", "banana", "dog", "elephant")
    val longWords = words.filter(w => w.length > 4)
    println(s"Words: $words")
    println(s"Long words: $longWords")
  }
}

`reduce` ile Birleştirme

reduce işlemi, bir koleksiyondaki tüm öğeleri tek bir sonuçta birleştirir. İkili bir işlem alır (iki bağımsız değişken alan ve bir tane döndüren bir işlev) ve bunu kümülatif olarak uygular.

Burada tüm öğeleri topluyoruz:

object Main {
  def main(args: Array[String]): Unit = {
    val numbers = List(1, 2, 3, 4)
    val sum = numbers.reduce((a, b) => a + b)
    println(s"Numbers: $numbers")
    println(s"Sum: $sum")
  }
}

Çarpım ve Maksimum için `reduce`

reduce çeşitli toplulaştırma işlemleri gerçekleştirebilir. Sayıların çarpımını hesaplayabilir veya en büyük değeri bulabiliriz.

Not: reduce, boş bir koleksiyonda hata verir.

object Main {
  def main(args: Array[String]): Unit = {
    val numbers = List(1, 5, 2, 8)
    val product = numbers.reduce((a, b) => a * b)
    val maxNum = numbers.reduce((a, b) => if (a > b) a else b)
    println(s"Numbers: $numbers")
    println(s"Product: $product")
    println(s"Max: $maxNum")
  }
}

`fold`: Başlangıç Değerinin Gücü

fold, önemli bir fark dışında reduce'a benzer: bir başlangıç değeri (aynı zamanda "biriktirici" olarak da adlandırılır) alır. Bu, boş koleksiyonlarda güvenli olmasını sağlar ve farklı sonuç türlerine izin verir.

10'dan başlayarak sayıları toplayalım:

object Main {
  def main(args: Array[String]): Unit = {
    val numbers = List(1, 2, 3)
    // foldLeft(initialValue)(operation)
    val sumWithInitial = numbers.foldLeft(10)((acc, n) => acc + n)
    println(s"Numbers: $numbers")
    println(s"Sum (starting from 10): $sumWithInitial")
  }
}

Yön: `foldLeft` ve `foldRight`

Scala, foldLeft ve foldRight işlevlerini sunar. Bunlar, öğelerin işlenme sırası ve biriktiricinin aktarılma biçimi açısından farklıdır.

  • foldLeft(initial)(op): Soldan sağa işler.
  • foldRight(initial)(op): Sağdan sola işler.

Dizeleri birleştirme gibi işlemlerde yön önemlidir!

object Main {
  def main(args: Array[String]): Unit = {
    val chars = List('a', 'b', 'c')
    val leftFold = chars.foldLeft("")((acc, c) => acc + c)
    val rightFold = chars.foldRight("")((c, acc) => acc + c)
    println(s"Chars: $chars")
    println(s"foldLeft: $leftFold") // Output: abc
    println(s"foldRight: $rightFold") // Output: abc (due to string append order)

    // Example where order matters: (acc, char) => char + acc
    val rightFoldReversed = chars.foldRight("")((c, acc) => c + acc)
    println(s"foldRight (char + acc): $rightFoldReversed") // Output: abc

    // A common example where order matters is for operations like subtraction or division, but string concatenation also shows it.
  }
}

İşlevsel İşlemler Denetimi

Aşağıdaki Scala kod parçasını inceleyin:

val data = List(10, 20, 30, 40)
val result1 = data.map(x => x / 10)
val result2 = data.filter(x => x > 25)
val result3 = data.reduce((a, b) => a + b)

Aşağıdaki ifadelerden hangileri sonuçlar hakkında TRUE'dur?

Tekrar: İşlevsel İşlemlerin Gücü

Temel işlevsel işlemlerde ustalaştınız!

  • map her öğeyi dönüştürür.
  • filter bir koşula göre öğeleri seçer.
  • reduce öğeleri tek bir sonuçta birleştirir (boş olmayan bir koleksiyon gerektirir).
  • fold öğeleri bir başlangıç değeriyle birleştirir (boş koleksiyonlarda güvenlidir).

Bu işlemler kısa, değişmez ve güçlü Scala kodu yazmanın temelini oluşturur. Sırada Option, Try ve Either kullanarak sağlam hata yönetimini inceleyeceğiz.

Başlamak ücretsiz

Yapay zeka eğitmeniyle Scala öğren — ücretsiz

Tarayıcında gerçek kod yaz ve çalıştır, 7/24 yapay zeka eğitmeninden anında yardım al; web'de ya da uygulamada kaldığın yerden devam et.

Kurslar
39
Dersler
143

Sıkça Sorulan Sorular

“Koleksiyonlarda İşlevsel İşlemler” dersi ücretsiz mi?

Evet — “Koleksiyonlarda İşlevsel İşlemler” 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 3 dersten oluşur.

“Koleksiyonlarda İşlevsel İşlemler” dersinde ne öğreneceğim?

Veri dönüştürme için eşleme, süzme, katlama ve indirgeme gibi yaygın işlevsel işlemlerde uzmanlaşı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, 3 dersinin 2. dersidir.

“Koleksiyonlarda İşlevsel İşlemler” 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ğişmez Koleksiyonları Derinlemesine İnceleme
  2. Koleksiyonlarda İşlevsel İşlemler
  3. Hatalar için Option, Try ve Either
← Scala for Backend Engineering & Functional Programming Sayfasına Dön