0Pricing
Scala for Backend Engineering & Functional Programming · Ders

Yapıdan Ayırma

Verilerden çıkarma

Yapıdan Ayırma, CoddyKit'te ücretsiz bir Scala for Backend Engineering & Functional Programming dersidir. Bu, 4 dersinin 4. 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.

Yapı Ayrıştırma Nedir?

Yapı ayrıştırma (desenleştirme olarak da adlandırılır), bir veri yapısının parçalarını doğrudan bir desen içinde çıkarmaktır.

Erişim yöntemlerini çağırmak yerine, yapıyı tanımlar ve istediğiniz parçalara ad verirsiniz.

Bir Demeti Ayrıştırma

Bir demet, birden fazla değeri gruplar. Parantez içinde adları yazarak bunları tek bir bağlamada ayırabilirsiniz.

object Main {
  def main(args: Array[String]): Unit = {
    val pair = ("Ada", 1815)
    val (name, year) = pair
    println(s"$name was born in $year")
  }
}

match İçinde Demetler

Bir demeti match içinde ayrıştırabilir, her bileşene ad verebilir veya her bileşeni eşleştirebilirsiniz.

object Main {
  def quadrant(p: (Int, Int)): String = p match {
    case (0, 0) => "origin"
    case (x, 0) => s"on x-axis at $x"
    case (0, y) => s"on y-axis at $y"
    case (x, y) => s"point ($x, $y)"
  }
  def main(args: Array[String]): Unit = {
    println(quadrant((0, 0)))
    println(quadrant((3, 0)))
    println(quadrant((2, 5)))
  }
}

Bir Listenin Başını Ayrıştırma

:: işleci (cons), bir listeyi ilk öğesine (baş) ve geri kalanına (kuyruk) ayırır.

head :: tail deseni, boş olmayan her listeyle eşleşir.

object Main {
  def first(xs: List[Int]): String = xs match {
    case head :: tail => s"head=$head, rest=$tail"
    case Nil          => "empty"
  }
  def main(args: Array[String]): Unit = {
    println(first(List(10, 20, 30)))
    println(first(Nil))
  }
}

Tam Liste Yapılarını Eşleştirme

Öğelerini listeleyerek belirli uzunluktaki listeleri eşleştirebilirsiniz; örneğin List(a, b) tam olarak iki öğe anlamına gelir.

object Main {
  def shape(xs: List[Int]): String = xs match {
    case List()        => "none"
    case List(a)       => s"one: $a"
    case List(a, b)    => s"two: $a, $b"
    case _             => "many"
  }
  def main(args: Array[String]): Unit = {
    println(shape(List()))
    println(shape(List(1)))
    println(shape(List(1, 2)))
    println(shape(List(1, 2, 3)))
  }
}

Baş ve Kuyrukla Özyineleme

Başı kuyruktan ayırmak, bir liste üzerinde temiz bir özyineleme yapmanızı sağlar.

Burada başı kuyruğun toplamına ekleyerek bir listenin toplamını hesaplıyoruz.

object Main {
  def sum(xs: List[Int]): Int = xs match {
    case Nil          => 0
    case head :: tail => head + sum(tail)
  }
  def main(args: Array[String]): Unit = {
    println(sum(List(1, 2, 3, 4)))
  }
}

İç İçe Yapıları Ayrıştırma

Desenler iç içe geçebilir. Bir demeti liste içinde veya bir listeyi demet içinde tek seferde ayrıştırabilirsiniz.

object Main {
  def main(args: Array[String]): Unit = {
    val data = List(("a", 1), ("b", 2))
    data match {
      case (key, value) :: _ => println(s"first key=$key value=$value")
      case Nil               => println("empty")
    }
  }
}

_ ile Parçaları Yoksayma

İlgilenmediğiniz bileşenler için _ kullanın. Bu, desenleri gerçekten ihtiyaç duyduğunuz verilere odaklar.

object Main {
  def main(args: Array[String]): Unit = {
    val triple = (1, 2, 3)
    val (_, middle, _) = triple
    println(s"middle = $middle")
  }
}

İlk İkisini Bağlayıp Geri Kalanı Tutma

İlk öğelere ad verebilir ve kuyruk deseniyle sonraki her şeyi yakalayabilirsiniz.

object Main {
  def main(args: Array[String]): Unit = {
    val xs = List(1, 2, 3, 4, 5)
    xs match {
      case a :: b :: rest => println(s"a=$a b=$b rest=$rest")
      case _              => println("too short")
    }
  }
}

Yapı Ayrıştırma Neden Kullanılır?

Yapı ayrıştırma, veri erişimini şu hâle getirir:

  • Bildirime dayalı: adımları değil, yapıyı tanımlarsınız
  • Güvenli: Çıkarma sırasında yapı denetlenir
  • Kısa: Birden fazla değer tek desende bağlanır

Durum sınıflarıyla birlikte daha da güçlü hâle gelir.

Hepsini Bir Araya Getirme

Bu örnek, demetlerden oluşan bir listeyi ayrıştırır ve yapısına göre tepki verir.

object Main {
  def report(scores: List[(String, Int)]): String = scores match {
    case Nil                  => "no scores"
    case (name, pts) :: Nil   => s"only $name with $pts"
    case (name, pts) :: rest  => s"top $name=$pts plus ${rest.size} more"
  }
  def main(args: Array[String]): Unit = {
    println(report(Nil))
    println(report(List(("Ann", 90))))
    println(report(List(("Ann", 90), ("Bo", 80))))
  }
}

Kısa Kontrol

Yapı ayrıştırmayı ne kadar anladığınızı test edin.

Özet

Verileri desenlerde ayrıştırmayı öğrendiniz:

  • Demetler (a, b) ile ayrılır
  • Listeler head :: tail veya List(a, b) gibi tam yapılarla ayrılır
  • Nil, boş listeyle eşleşir
  • Parçaları yoksaymak için _ kullanın; derin yapılar için desenleri iç içe yerleştirin
  • Baş/kuyruk ayırma, temiz özyinelemeyi mümkün kılar

Sıkça Sorulan Sorular

“Yapıdan Ayırma” dersi ücretsiz mi?

Evet — “Yapıdan Ayırma” 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.

“Yapıdan Ayırma” dersinde ne öğreneceğim?

Verilerden çıkarma 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 4. dersidir.

“Yapıdan Ayırma” 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. match İfadeleri
  2. Türleri ve Değerleri Eşleştirme
  3. Koruyucular ve Bağlama
  4. Yapıdan Ayırma
← Scala for Backend Engineering & Functional Programming Sayfasına Dön