0Pricing
Kotlin Academy · บทเรียน

ชนิดข้อมูล 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 ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. ชนิดข้อมูล Result
  2. runCatching
  3. ลำดับชั้น Result แบบปิด
  4. การจัดการข้อผิดพลาดเชิงฟังก์ชัน
← กลับไปที่ Kotlin Academy