0Pricing
Scala for Backend Engineering & Functional Programming · 강의

ZIO 조합

flatMap과 for를 알아봅니다

ZIO 조합은(는) CoddyKit의 무료 Scala for Backend Engineering & Functional Programming 강의입니다. 이것은 4개 중 2번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 Scala for Backend Engineering & Functional Programming 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. Scala for Backend Engineering & Functional Programming 강의에는 총 4개의 강의가 포함되어 있습니다.

flatMap으로 순차 실행하기

ZIO는 모나드이므로 flatMap은 각 단계에서 이전 결과를 사용할 수 있도록 효과를 연결합니다. 오류 타입과 환경 타입은 자동으로 결합됩니다.

import zio._

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

for 내포식

for 내포식은 ZIO 효과를 순차 실행하는 관용적인 방법입니다. 순수성을 유지하면서 명령형 코드처럼 읽을 수 있습니다.

import zio._

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

오류 타입 결합하기

서로 다른 오류 타입 E1과 E2를 가진 두 효과를 조합하면 ZIO는 최소 상계인 E1 with E2의 공통 상위 타입을 추론합니다. 이 타입은 흔히 Throwable이거나 봉인된 특성입니다.

zip과 zipPar

zip은 두 효과를 순차적으로 실행하여 튜플로 결합합니다. zipPar는 별도의 파이버에서 두 효과를 동시에 실행합니다.

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

*>(zipRight)는 두 번째 결과를 유지하고, <*(zipLeft)는 첫 번째 결과를 유지합니다. 둘 다 효과를 순서대로 실행합니다.

import zio._

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

foreach

ZIO.foreach는 컬렉션의 각 요소에 대해 효과를 실행하고 결과를 모읍니다. 순회와 비슷한 방식입니다.

import zio._

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

foreachPar

ZIO.foreachPar는 각 요소의 효과를 동시에 실행합니다. 여러 HTTP 요청과 같은 병렬 입출력에 적합합니다.

import zio._

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

조건부 효과

ZIO.when은 조건이 참일 때만 효과를 실행하고 결과의 Option을 반환합니다. ZIO.unless는 그 반대입니다.

import zio._

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

반복

ZIO.iterate와 ZIO.loop은 효과가 포함된 반복문을 구성합니다. repeatN은 효과를 정해진 횟수만큼 다시 실행합니다.

import zio._

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

조합된 작업 흐름

여기서는 for 내포식에서 작은 ZIO 단계만 조합하여 합계를 계산하고 출력하는 작업 흐름을 구성합니다.

import zio._

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

일반 Scala 동등 코드

비교를 위해 동일한 로직을 즉시 실행되는 일반 Scala로 작성했습니다. ZIO는 실행을 미루고 효과를 타입 시스템에서 추적하지만 출력은 동일합니다.

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

빠른 확인

목록의 각 요소에 대해 효과를 동시에 실행하는 조합자는 무엇인가요?

복습

다음과 같이 ZIO 효과를 조합했습니다.

  • 순차 실행을 위한 flatMap / for
  • zip / zipPar, *>, <*
  • foreach / foreachPar
  • when / unless 및 반복

다음: 오류 채널과 의존성 채널

자주 묻는 질문

“ZIO 조합” 강의는 무료인가요?

네 — “ZIO 조합” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 Scala for Backend Engineering & Functional Programming 강의 전체를 잠금 해제할 수 있습니다. Scala for Backend Engineering & Functional Programming 강의에는 총 4개의 강의가 포함되어 있습니다.

“ZIO 조합”에서 뭘 배우나요?

flatMap과 for를 알아봅니다 브라우저에서 직접 실행하는 실습 코드로 Scala for Backend Engineering & Functional Programming을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.

Scala for Backend Engineering & Functional Programming을(를) 시작하는 데 경험이 필요한가요?

사전 경험은 필요하지 않습니다. CoddyKit의 Scala for Backend Engineering & Functional Programming은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 2번째 강의입니다.

“ZIO 조합” 강의는 얼마나 걸리나요?

대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.

이 Scala for Backend Engineering & Functional Programming 강의에서 코드를 작성하고 실행할 수 있나요?

네. 모든 Scala for Backend Engineering & Functional Programming 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.

이 강의의 모든 강의

  1. ZIO 효과
  2. ZIO 조합
  3. 오류 채널과 의존성 채널
  4. ZIO 앱 실행
← Scala for Backend Engineering & Functional Programming(으)로 돌아가기