เอฟเฟกต์ ZIO
ZIO[R,E,A]
เอฟเฟกต์ ZIO เป็นบทเรียน Scala for Backend Engineering & Functional Programming ฟรีบน CoddyKit นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Scala for Backend Engineering & Functional Programming และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Scala for Backend Engineering & Functional Programming มีบทเรียนทั้งหมด 4 บทเรียน
ZIO คืออะไร
ZIO คือไลบรารีสำหรับผลกระทบเชิงฟังก์ชันแบบอะซิงโครนัส ทำงานพร้อมกัน และปลอดภัยต่อทรัพยากร ชนิดหลักคือ ZIO[R, E, A] — คำอธิบายเวิร์กโฟลว์ที่เมื่อได้รับสภาพแวดล้อม R แล้วอาจล้มเหลวด้วย E หรือสำเร็จด้วย A
พารามิเตอร์ชนิดสามตัว
อ่าน 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)การพิมพ์ไปยังคอนโซล
บริการ Console ของ ZIO มีการพิมพ์ที่มีผลกระทบ Console.printLine คืนค่า ZIO ที่มีชนิดข้อผิดพลาดเป็น IOException
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")ความประเมินแบบขี้เกียจและความบริสุทธิ์
เช่นเดียวกับ IO ของ Cats Effect ค่า 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
เรียนรู้ Scala ด้วย AI tutor — ฟรี
เขียนและเรียกใช้โค้ดจริงในเบราว์เซอร์ของคุณ รับความช่วยเหลือทันทีจาก AI tutor 24/7 และเรียนรู้ต่อจากที่คุณหยุดบนเว็บหรือในแอป
- คอร์ส
- 39
- บทเรียน
- 143
คำถามที่พบบ่อย
บทเรียน “เอฟเฟกต์ ZIO” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “เอฟเฟกต์ ZIO” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส 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 ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Scala for Backend Engineering & Functional Programming หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน Scala for Backend Engineering & Functional Programming บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน
บทเรียน “เอฟเฟกต์ ZIO” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน Scala for Backend Engineering & Functional Programming นี้ได้ไหม
ได้ บทเรียน Scala for Backend Engineering & Functional Programming ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ