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

ชนิด Result — Result<T, Error>

แทนความสำเร็จหรือความล้มเหลวโดยไม่ต้องโยนข้อผิดพลาดด้วย Result สร้างผลลัพธ์ ใช้ switch กับผลลัพธ์ ใช้ map/flatMap และเชื่อมต่อกับ throws ได้ทั้งสองทาง

ชนิด Result — Result<T, Error> เป็นบทเรียน Swift Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 3 จากทั้งหมด 3 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Swift Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Swift Academy มีบทเรียนทั้งหมด 3 บทเรียน

ทำไมต้องใช้ผลลัพธ์

เป้าหมาย: ใช้ ผลลัพธ์<T, ข้อผิดพลาด> เพื่อคืนค่าความสำเร็จหรือความล้มเหลวอย่างชัดเจน เหมาะสำหรับการเรียกกลับหรือส่วนติดต่อการเขียนโปรแกรมที่ไม่ใช้การโยนข้อผิดพลาด

การสร้างผลลัพธ์

สร้าง .ความสำเร็จ(ค่า) หรือ .ความล้มเหลว(ข้อผิดพลาด) แทนการโยนข้อผิดพลาด

enum ParseError: Error { case badInt }
func parseInt(_ s: String) -> Result<Int, Error> {
    if let n = Int(s) { return .success(n) }
    else { return .failure(ParseError.badInt) }
}
print(parseInt("42"))
print(parseInt("nope"))

เลือกกรณีจากผลลัพธ์

จัดการผลลัพธ์ด้วย คำสั่งเลือกกรณี เพื่อให้เส้นทางความสำเร็จและความล้มเหลวชัดเจน

let r = parseInt("10")
switch r {
case .success(let n): print("number =", n)
case .failure(let e): print("error:", e)
}

การแปลงผลลัพธ์

แปลงความสำเร็จด้วย map เชื่อมงานที่สร้างผลลัพธ์ด้วย flatMap และปรับข้อผิดพลาดด้วย mapError

let r1 = parseInt("5").map { $0 * 2 }              // Result<Int, Error>
let r2 = parseInt("x").map { $0 * 2 }                    // still .failure
let r3 = parseInt("8").flatMap { n in                    // chain Results
    n % 2 == 0 ? .success(n/2) : .failure(ParseError.badInt)
}
let rErr = parseInt("x").mapError { $0 }                 // transform error type if needed
print(r1, r2, r3, rErr)

การโยนข้อผิดพลาด → ผลลัพธ์

ใช้ ตัวเริ่มต้นผลลัพธ์ { ลอง ... } เพื่อเก็บการเรียกที่โยนข้อผิดพลาดไว้เป็น ผลลัพธ์ โดยอัตโนมัติ

enum LoadError: Error { case notFound }
func load(text name: String) throws -> String {
    guard name == "ok" else { throw LoadError.notFound }
    return "loaded"
}
// Build a Result from a throwing call:
let res = Result { try load(text: "ok") }     // .success("loaded")
let res2 = Result { try load(text: "missing") } // .failure(LoadError.notFound)
print(res, res2)

ผลลัพธ์ → การโยนข้อผิดพลาด

เรียก get() เพื่อโยนข้อผิดพลาดจาก ผลลัพธ์ ต่อ ซึ่งเป็นการเชื่อมกลับไปยังโค้ดที่โยนข้อผิดพลาด

let outcome = parseInt("12")
do {
    let value = try outcome.get()   // throws if .failure
    print("value =", value)
} catch {
    print("thrown from get():", error)
}

ความหมายของผลลัพธ์

ตรวจสอบอย่างรวดเร็ว: ผลลัพธ์<T, ข้อผิดพลาด> แทนอะไร

สรุปทบทวน

สรุปทบทวน: สร้างค่า ผลลัพธ์ จัดการด้วย คำสั่งเลือกกรณี แปลงผ่าน map/flatMap/mapError และเชื่อมไปยังหรือกลับจากการโยนข้อผิดพลาดด้วยตัวเริ่มต้น ผลลัพธ์ { ลอง ... } และ get()

คำถามที่พบบ่อย

บทเรียน “ชนิด Result — Result<T, Error>” ฟรีหรือไม่

ใช่ — ข้อความเต็มของ “ชนิด Result — Result<T, Error>” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Swift Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Swift Academy มีบทเรียนทั้งหมด 3 บทเรียน

คุณจะเรียนรู้อะไรในบทเรียน “ชนิด Result — Result<T, Error>”

แทนความสำเร็จหรือความล้มเหลวโดยไม่ต้องโยนข้อผิดพลาดด้วย Result สร้างผลลัพธ์ ใช้ switch กับผลลัพธ์ ใช้ map/flatMap และเชื่อมต่อกับ throws ได้ทั้งสองทาง คุณปฏิบัติ Swift Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Swift Academy หรือไม่

ไม่จำเป็นต้องมีประสบการณ์มาก่อน Swift Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 3 จากทั้งหมด 3 บทเรียน

บทเรียน “ชนิด Result — Result<T, Error>” ใช้เวลานานแค่ไหน

บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย

ฉันเขียนและรันโค้ดในบทเรียน Swift Academy นี้ได้ไหม

ได้ บทเรียน Swift Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

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

  1. การเชื่อมโยงออปชันนัลและพื้นฐานการจัดการข้อผิดพลาด
  2. do/catch และการกำหนดข้อผิดพลาด (เอนัม)
  3. ชนิด Result — Result
← กลับไปที่ Swift Academy