ZIO エフェクト
ZIO[R,E,A] です。
「ZIO エフェクト」はCoddyKit上の無料Scala for Backend Engineering & Functional Programmingレッスンです。 これはレッスン1/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはScala for Backend Engineering & Functional Programming学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Scala for Backend Engineering & Functional Programmingコースには全4レッスンが含まれています。
ZIOとは
ZIOは、非同期処理、並行処理、リソース安全な関数型エフェクトのためのライブラリです。中心となる型はZIO[R, E, A]で、環境Rが与えられると、Eで失敗するかAで成功するワークフローを記述します。
3つの型パラメーター
ZIO[R, E, A]は、(エフェクトを伴い非同期に動作する)関数R => Either[E, A]として読み取れます。
R— 必要な環境 / 依存関係E— 失敗時のエラー型A— 成功時の値の型
型エイリアス
ZIOは便利なエイリアスを提供します。
UIO[A]=ZIO[Any, Nothing, A]— 失敗しないTask[A]=ZIO[Any, Throwable, A]IO[E, A]=ZIO[Any, E, A]RIO[R, A]=ZIO[R, Throwable, A]
成功するエフェクトの作成
ZIO.succeedは純粋な値を持ち上げます。エフェクトは失敗しないため、エラー型はNothingです。
import zio._
val meaning: UIO[Int] = ZIO.succeed(42)失敗の作成
ZIO.failは、型付きエラーを持つ失敗したエフェクトを作成します。決して成功しないため、成功時の型はNothingです。
import zio._
val failed: IO[String, Nothing] = ZIO.fail("Something went wrong")副作用のラップ
ZIO.attemptは、例外をスローする可能性がある副作用付きのブロックをラップします。エラー型はThrowable(つまりTask)になります。
import zio._
val parsed: Task[Int] = ZIO.attempt("123".toInt)コンソールへの出力
ZIOのConsoleサービスは、エフェクト付きの出力を提供します。Console.printLineは、エラー型がIOExceptionであるZIOを返します。
import zio._
val hello = Console.printLine("Hello, ZIO!")map
mapは成功値を変換し、エラーと環境のチャネルはそのまま保持します。
import zio._
val doubled: UIO[Int] = ZIO.succeed(21).map(_ * 2)mapError
mapErrorはエラーチャネルを変換します。低レベルの失敗をドメイン固有のエラーに変換する場合に便利です。
import zio._
val e: IO[String, Int] =
ZIO.fail(404).mapError(code => s"HTTP $code")遅延評価と純粋性
Cats EffectのIOと同様に、ZIOの値は純粋で遅延評価される記述です。これを構築してもエフェクトは実行されず、ZIOランタイム上で実行したときに初めて実行されます。
通常のScalaによる基準実装
比較のため、即時実行される自己完結型のScalaプログラムを示します。ZIOでは実行とエラーを遅延させ、型で追跡しますが、出力は同じです。
object Main {
def main(args: Array[String]): Unit = {
val x = 42
println(s"value: $x")
}
}クイックチェック
ZIO[R, E, A]で、Eパラメーターは何を表しますか?
まとめ
ZIOのエフェクト型について学びました。
ZIO[R, E, A]— 環境、エラー、成功UIO、Task、IO、RIOのエイリアスsucceed、fail、attemptmapとmapError
次は、ZIOエフェクトの合成です。
よくある質問
「ZIO エフェクト」レッスンは無料ですか?
はい。「ZIO エフェクト」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Scala for Backend Engineering & Functional Programmingコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Scala for Backend Engineering & Functional Programmingコースには全4レッスンが含まれています。
「ZIO エフェクト」で何を学びますか?
ZIO[R,E,A] です。 ブラウザで直接実行するハンズオンコードでScala for Backend Engineering & Functional Programmingを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
Scala for Backend Engineering & Functional Programmingを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのScala for Backend Engineering & Functional Programmingは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン1/4です。
「ZIO エフェクト」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このScala for Backend Engineering & Functional Programmingレッスンでコードを書いて実行できますか?
はい。すべてのScala for Backend Engineering & Functional Programmingレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- ZIO エフェクト
- ZIO の合成
- エラーと依存性のチャネル
- ZIO アプリの実行