0Pricing
Scala for Backend Engineering & Functional Programming · Pelajaran

Menyusun ZIO

flatMap dan for.

Menyusun ZIO adalah pelajaran Scala for Backend Engineering & Functional Programming gratis di CoddyKit. Ini adalah pelajaran 2 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar Scala for Backend Engineering & Functional Programming, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Scala for Backend Engineering & Functional Programming mencakup 4 pelajaran total.

Pengurutan dengan flatMap

ZIO adalah monad, sehingga flatMap merangkai efek ketika setiap langkah dapat menggunakan hasil sebelumnya. Tipe galat dan lingkungan digabungkan secara otomatis.

import zio._

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

for-comprehension

for-comprehension merupakan cara idiomatis untuk mengurutkan efek ZIO. Bentuknya menyerupai kode imperatif, tetapi tetap murni.

import zio._

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

Menggabungkan Tipe Galat

Saat Anda menyusun dua efek dengan tipe galat berbeda, E1 dan E2, ZIO menyimpulkan batas atas terkecil, yaitu supertipe bersama dari E1 with E2, yang sering berupa Throwable atau trait tersegel.

zip dan zipPar

zip menggabungkan dua efek menjadi tuple secara berurutan. zipPar menjalankannya secara bersamaan pada fiber terpisah.

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 dan zipLeft

*> (zipRight) mempertahankan hasil kedua; <* (zipLeft) mempertahankan hasil pertama. Keduanya menjalankan efek secara berurutan.

import zio._

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

foreach

ZIO.foreach menjalankan suatu efek untuk setiap elemen koleksi dan mengumpulkan hasilnya, seperti operasi traverse.

import zio._

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

foreachPar

ZIO.foreachPar menjalankan efek setiap elemen secara bersamaan—ideal untuk operasi I/O paralel seperti beberapa permintaan HTTP.

import zio._

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

Efek Kondisional

ZIO.when menjalankan efek hanya jika suatu kondisi benar, lalu mengembalikan Option berisi hasilnya. ZIO.unless merupakan kebalikannya.

import zio._

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

Perulangan

ZIO.iterate dan ZIO.loop membangun perulangan yang menghasilkan efek. repeatN menjalankan kembali suatu efek sebanyak jumlah yang telah ditentukan.

import zio._

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

Alur Kerja yang Disusun

Di sini, sebuah alur kerja menghitung jumlah lalu mencetaknya, seluruhnya disusun dari langkah-langkah kecil ZIO dalam for-comprehension.

import zio._

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

Padanan Scala Sederhana

Logika yang sama dalam Scala sederhana yang langsung dijalankan sebagai perbandingan. ZIO menunda efek dan melacaknya dalam sistem tipe, tetapi menghasilkan keluaran yang identik.

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

Pemeriksaan Singkat

Kombinator mana yang menjalankan efek untuk setiap elemen daftar secara bersamaan?

Ringkasan

Anda telah menyusun efek ZIO dengan:

  • flatMap / for untuk pengurutan
  • zip / zipPar, *>, <*
  • foreach / foreachPar
  • when / unless dan perulangan

Berikutnya: saluran galat dan dependensi.

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Menyusun ZIO” gratis?

Ya — teks lengkap “Menyusun ZIO” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus Scala for Backend Engineering & Functional Programming, upgrade ke CoddyKit PRO. Kursus Scala for Backend Engineering & Functional Programming mencakup 4 pelajaran total.

Apa yang akan aku pelajari di “Menyusun ZIO”?

flatMap dan for. Kamu berlatih Scala for Backend Engineering & Functional Programming dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.

Apakah aku perlu pengalaman untuk memulai Scala for Backend Engineering & Functional Programming?

Tidak diperlukan pengalaman sebelumnya. Scala for Backend Engineering & Functional Programming di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 2 dari 4.

Berapa lama pelajaran “Menyusun ZIO” memakan waktu?

Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.

Bisakah aku menulis dan menjalankan kode dalam pelajaran Scala for Backend Engineering & Functional Programming ini?

Ya. Setiap pelajaran Scala for Backend Engineering & Functional Programming menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.

Semua pelajaran dalam kursus ini

  1. Efek ZIO
  2. Menyusun ZIO
  3. Kanal Error dan Dependensi
  4. Menjalankan Aplikasi ZIO
← Kembali ke Scala for Backend Engineering & Functional Programming