Scala for Backend Engineering & Functional Programming · Ders

ZIO Birleştirme

flatMap ve for

2. ders / 413 adım

ZIO Birleştirme, CoddyKit'te ücretsiz bir Scala for Backend Engineering & Functional Programming dersidir. Bu, 4 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 4 dersten oluşur.

flatMap ile Sıralı Çalıştırma

ZIO bir monaddır; bu nedenle flatMap, her adımın önceki sonucu kullanabildiği etkileri birbirine bağlar. Hata ve ortam türleri otomatik olarak birleştirilir.

import zio._

val prog =
  ZIO.succeed(10).flatMap(n => Console.printLine(s"n = $n"))

for ifadesi

for ifadesi, ZIO etkilerini sıralı şekilde çalıştırmanın deyimsel yoludur; saf kalırken zorunlu kod gibi okunur.

import zio._

val prog = for {
  _    <- Console.printLine("Enter name:")
  name <- Console.readLine
  _    <- Console.printLine(s"Hello, $name")
} yield ()

Hata Türlerini Birleştirme

Farklı hata türlerine, E1 ve E2'ye sahip iki etkiyi birleştirdiğinizde ZIO, ortak üst tür olan en küçük üst sınırı, yani E1 with E2'yi çıkarır; bu tür genellikle Throwable veya mühürlü bir özelliktir.

zip ve zipPar

zip, iki etkiyi sıralı olarak bir demet hâlinde birleştirir. zipPar ise bunları ayrı fiber'larda eşzamanlı olarak çalıştırır.

import zio._

val seq: UIO[(Int, Int)] = ZIO.succeed(1).zip(ZIO.succeed(2))
val par: UIO[(Int, Int)] = ZIO.succeed(1).zipPar(ZIO.succeed(2))

zipRight ve zipLeft

*> (zipRight) ikinci sonucu korur; <* (zipLeft) ilk sonucu korur. Her ikisi de etkileri sırayla çalıştırır.

import zio._

val r = Console.printLine("log") *> ZIO.succeed(99)

foreach

ZIO.foreach, bir koleksiyonun her öğesi için bir etki çalıştırır ve sonuçları, traverse işlemine benzer şekilde toplar.

import zio._

val prog = ZIO.foreach(List(1, 2, 3))(n => Console.printLine(n.toString))

foreachPar

ZIO.foreachPar, her öğenin etkisini eşzamanlı olarak çalıştırır; birden çok HTTP isteği gibi paralel G/Ç işlemleri için idealdir.

import zio._

val ids = List(1, 2, 3)
val prog = ZIO.foreachPar(ids)(id => ZIO.succeed(id * 10))

Koşullu Etkiler

ZIO.when, yalnızca bir koşul doğruysa bir etki çalıştırır ve sonucun Option değerini döndürür. ZIO.unless bunun tersidir.

import zio._

def logIf(debug: Boolean) =
  ZIO.when(debug)(Console.printLine("debugging"))

Döngüler

ZIO.iterate ve ZIO.loop, etkili döngüler oluşturur. repeatN ise bir etkiyi sabit sayıda yeniden çalıştırır.

import zio._

val ticks = Console.printLine("tick").repeatN(2) // runs 3 times total

Birleştirilmiş İş Akışı

Burada bir iş akışı, bir toplam hesaplayıp yazdırır; tümü bir for ifadesindeki küçük ZIO adımlarından oluşturulmuştur.

import zio._

val workflow = for {
  a <- ZIO.succeed(20)
  b <- ZIO.succeed(22)
  _ <- Console.printLine(s"Sum: ${a + b}")
} yield ()

Basit Scala Karşılığı

Karşılaştırma amacıyla aynı mantığın hemen çalışan basit Scala'daki hâli. ZIO, çalıştırmayı erteler ve etkileri tür sisteminde izler; ancak aynı çıktıyı üretir.

object Main {
  def main(args: Array[String]): Unit = {
    val a = 20
    val b = 22
    println(s"Sum: ${a + b}")
  }
}

Hızlı Kontrol

Bir listenin her öğesi için bir etkiyi eşzamanlı olarak hangi birleştirici çalıştırır?

Özet

ZIO etkilerini şunlarla birleştirdiniz:

  • Sıralı çalıştırma için flatMap / for
  • zip / zipPar, *>, <*
  • foreach / foreachPar
  • when / unless ve döngüler

Sırada: hata ve bağımlılık kanalları.

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

“ZIO Birleştirme” dersi ücretsiz mi?

Evet — “ZIO Birleştirme” 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.

“ZIO Birleştirme” dersinde ne öğreneceğim?

flatMap ve for 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 2. dersidir.

“ZIO Birleştirme” 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. ZIO Etkisi
  2. ZIO Birleştirme
  3. Hata ve Bağımlılık Kanalları
  4. ZIO Uygulamaları Çalıştırma
← Scala for Backend Engineering & Functional Programming Sayfasına Dön