ชนิดข้อมูล Result
จำลองความสำเร็จและความล้มเหลว
ชนิดข้อมูล Result เป็นบทเรียน Kotlin Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Kotlin Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Kotlin Academy มีบทเรียนทั้งหมด 4 บทเรียน
Success หรือความล้มเหลว
การดำเนินการจำนวนมากอาจล้มเหลว ชนิด Result ของ Kotlin ใช้จำลองผลลัพธ์ที่เป็นได้ทั้ง success ซึ่งเก็บค่าไว้ หรือ failure ซึ่งเก็บข้อยกเว้นไว้ โดยไม่ต้องโยนข้อยกเว้น
การสร้าง Success
ห่อหุ้มค่าไว้ในผลลัพธ์แบบ success ด้วย Result.success(value)
fun main() {
val r: Result<Int> = Result.success(42)
println(r.isSuccess)
println(r.getOrNull())
}การสร้างความล้มเหลว
ใช้ Result.failure(exception) แทนข้อผิดพลาด โดยจะยังไม่มีการโยนข้อยกเว้นจนกว่าคุณจะเลือกนำมันออกมา
fun main() {
val r: Result<Int> = Result.failure(IllegalStateException("bad"))
println(r.isFailure)
println(r.exceptionOrNull()?.message)
}getOrNull และ exceptionOrNull
ตรวจสอบผลลัพธ์อย่างปลอดภัย: getOrNull() คืนค่าหรือ null และ exceptionOrNull() คืนข้อผิดพลาดหรือ null
fun main() {
val ok = Result.success("hi")
val bad = Result.failure<String>(RuntimeException("oops"))
println(ok.getOrNull())
println(bad.exceptionOrNull()?.message)
}getOrDefault
ระบุค่าทดแทนสำหรับกรณี failure ด้วย getOrDefault ซึ่งสะอาดกว่าการตรวจสอบค่า null เมื่อคุณมีค่าเริ่มต้นที่เหมาะสม
fun main() {
val bad: Result<Int> = Result.failure(Exception())
println(bad.getOrDefault(0))
val ok: Result<Int> = Result.success(7)
println(ok.getOrDefault(0))
}getOrElse
getOrElse คำนวณค่าทดแทนจากข้อยกเว้น ทำให้คุณตอบสนองต่อข้อผิดพลาดแต่ละแบบแตกต่างกันได้
fun main() {
val r: Result<Int> = Result.failure(IllegalArgumentException("nope"))
val value = r.getOrElse { e -> if (e is IllegalArgumentException) -1 else -2 }
println(value)
}getOrThrow
เมื่อคุณต้องการข้อยกเว้นจริง ๆ getOrThrow() จะคืนค่าหรือโยนข้อยกเว้นที่เก็บไว้อีกครั้ง
fun main() {
val ok = Result.success(10)
println(ok.getOrThrow())
try {
Result.failure<Int>(IllegalStateException("fail")).getOrThrow()
} catch (e: Exception) {
println("caught: " + e.message)
}
}การคืนค่า Result
ฟังก์ชันสามารถคืนค่า Result เพื่อระบุ failure อย่างชัดเจนในลายเซ็นของฟังก์ชัน และบังคับให้ผู้เรียกจัดการผลลัพธ์ทั้งสองแบบ
fun parse(s: String): Result<Int> {
val n = s.toIntOrNull()
return if (n != null) Result.success(n)
else Result.failure(NumberFormatException(s))
}
fun main() {
println(parse("123").getOrNull())
println(parse("x").exceptionOrNull()?.message)
}Result กับข้อยกเว้น
ข้อยกเว้นไม่ปรากฏในลายเซ็นและทำให้ลำดับการควบคุมถูกรบกวน ส่วน Result ทำให้ failure กลายเป็นค่าที่คุณส่งต่อและแปลงได้เช่นเดียวกับค่าอื่น ๆ จึงชัดเจน นำมาประกอบกันได้ และยากที่จะถูกละเลย
เมื่อใดควรใช้ Result
ใช้ Result กับ failure ที่คาดหมายได้และสามารถกู้คืนได้ ซึ่งคุณต้องการให้ผู้เรียกเป็นผู้จัดการ ส่วนข้อยกเว้นควรใช้กับสถานการณ์ผิดปกติอย่างแท้จริง เช่น ข้อผิดพลาดของโปรแกรมเมอร์จากการละเมิดสัญญา
ค่า ไม่ใช่การกระโดด
การเปลี่ยนแปลงสำคัญคือ ข้อผิดพลาดกลายเป็นค่าที่คืนตามปกติ ถัดไปคุณจะได้เรียนรู้ runCatching ซึ่งจับข้อยกเว้นที่ถูกโยนให้เป็น Result โดยอัตโนมัติ
ตรวจสอบอย่างรวดเร็ว
ทดสอบความเข้าใจของคุณเกี่ยวกับชนิด Result
สรุปทบทวน
คุณได้เรียนรู้ชนิด Result:
- สร้างด้วย
Result.success/Result.failure - ตรวจสอบด้วย
getOrNullและexceptionOrNull - กู้คืนด้วย
getOrDefault,getOrElseและgetOrThrow - คืนค่าเพื่อระบุ failure อย่างชัดเจน
ถัดไป: runCatching
คำถามที่พบบ่อย
บทเรียน “ชนิดข้อมูล Result” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “ชนิดข้อมูล Result” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Kotlin Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Kotlin Academy มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “ชนิดข้อมูล Result”
จำลองความสำเร็จและความล้มเหลว คุณปฏิบัติ Kotlin Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Kotlin Academy หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน Kotlin Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน
บทเรียน “ชนิดข้อมูล Result” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน Kotlin Academy นี้ได้ไหม
ได้ บทเรียน Kotlin Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- ชนิดข้อมูล Result
- runCatching
- ลำดับชั้น Result แบบปิด
- การจัดการข้อผิดพลาดเชิงฟังก์ชัน