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

map และ flatMap บน Result

เชื่อมการแปลงค่าความสำเร็จโดยไม่ต้องใช้คำสั่ง switch ซ้อนกัน

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

ยินดีต้อนรับ

`map` และ `flatMap` บน `Result` ช่วยให้คุณแปลงค่าผลสำเร็จได้โดยไม่ต้องมีคำสั่ง `switch` ซ้อนกัน ทำให้โค้ดเป็นเส้นตรงและอ่านง่าย

map บน Result

```swift let r: Result = .success(5) let doubled = r.map { $0 * 2 } // .success(10) let failed: Result = .failure(MyError.bad) let same = failed.map { $0 * 2 } // .failure(MyError.bad) ```

mapError บน Result

```swift let r: Result = .failure(URLError(.notConnectedToInternet)) let mapped = r.mapError { AppError.network($0) } // Result ```

`flatMap` — การเชื่อมการดำเนินการที่อาจล้มเหลว

```swift func parseJSON(_ data: Data) -> Result { ... } func validate(_ user: User) -> Result { ... } let result: Result = fetchResult .flatMap { parseJSON($0) } .flatMap { validate($0).mapError { $0 as Error } } ```

flatMapError

```swift func recover(_ e: NetworkError) -> Result { .success(cachedData) } let result = networkResult.flatMapError { recover($0) } ```

map เทียบกับ flatMap บน Result

• `map`: แปลงค่าผลสำเร็จ หากการแปลงคืนค่า `T` ผลลัพธ์จะเป็น `Result` • `flatMap`: การแปลงคืนค่า `Result` จึงป้องกันการซ้อนเป็น `Result,E>`

การเชื่อมการดำเนินการสามรายการ

```swift fetchData(url) .map { parse($0) } .flatMap { validate($0) } .map { transform($0) } // Each step only runs if previous succeeded ```

การเปรียบเทียบกับการเชื่อมแบบ Optional

การเชื่อม Result คล้ายกับการเชื่อมแบบ Optional สำหรับจัดการข้อผิดพลาด: ```swift // Optional chain: name?.uppercased()?.prefix(5) // Result chain: result.map { $0.uppercased() }.map { $0.prefix(5) } ```

การแปลงเป็น Optional

```swift let opt = result.success // Value? — nil on failure let val = try? result.get() // Value? — nil on failure ```

การกู้คืนด้วยรูปแบบคล้าย ??

```swift let value = (try? result.get()) ?? defaultValue ```

ตรวจสอบความเข้าใจอย่างรวดเร็ว

เมื่อ `result` เป็น `.failure` `result.flatMap { transform($0) }` จะทำอะไร

สรุป

ประเด็นสำคัญ: • `map` แปลงค่าผลสำเร็จและส่งต่อความล้มเหลวโดยไม่เปลี่ยนแปลง • `mapError` แปลงชนิดของความล้มเหลว • `flatMap` เชื่อมการดำเนินการที่คืนค่า Result เช่นกัน • ช่วยหลีกเลี่ยงคำสั่ง `switch` ที่ซ้อนกัน • ใช้เชื่อมการทำงานเป็นสายที่ส่งต่อข้อผิดพลาดอย่างเป็นระเบียบ ต่อไป: ชนิดข้อผิดพลาดแบบกำหนดเอง

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

บทเรียน “map และ flatMap บน Result” ฟรีหรือไม่

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

คุณจะเรียนรู้อะไรในบทเรียน “map และ flatMap บน Result”

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

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

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

บทเรียน “map และ flatMap บน Result” ใช้เวลานานแค่ไหน

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

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

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

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

  1. พื้นฐาน Result
  2. map และ flatMap บน Result
  3. ชนิดข้อผิดพลาดแบบกำหนดเองด้วย LocalizedError
  4. เชื่อม Result เข้ากับ async/await
← กลับไปที่ Swift Academy