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

flatMap และการเชื่อมต่อ

คลี่คอลเลกชันที่ซ้อนกันและเชื่อมการแปลงเข้าด้วยกัน

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

flatMap สองรูปแบบ

flatMap ที่ใช้กับลำดับจะแผ่โครงสร้างซ้อนกันออกหนึ่งระดับ โดยใช้คลอเชอร์ที่คืนค่าลำดับสำหรับสมาชิกแต่ละตัว แล้วนำลำดับทั้งหมดมาต่อกันเป็นอาร์เรย์แบนหนึ่งชุด

การแผ่อาร์เรย์ซ้อนกัน

เปลี่ยนอาร์เรย์ของอาร์เรย์ให้เป็นอาร์เรย์เดียว:

let nested = [[1, 2], [3, 4], [5]]
let flat = nested.flatMap { $0 }
print(flat)  // [1, 2, 3, 4, 5]

flatMap ที่สร้างลำดับ

สมาชิกแต่ละตัวสามารถขยายออกเป็นหลายรายการได้:

let nums = [1, 2, 3]
let expanded = nums.flatMap { [$0, $0 * 10] }
print(expanded)  // [1, 10, 2, 20, 3, 30]

การจับคู่ทุกชุดที่เป็นไปได้

flatMap มีประโยชน์สำหรับการสร้างผลคูณคาร์ทีเซียน:

let suits = ["Hearts", "Spades"]
let ranks = ["A", "K"]
let deck = suits.flatMap { suit in ranks.map { "\($0) of \(suit)" } }
print(deck)  // ["A of Hearts", "K of Hearts", "A of Spades", "K of Spades"]

flatMap กับ compactMap

ในอดีต flatMap ยังใช้แกะออปชันนัลด้วย แต่หน้าที่ดังกล่าวย้ายมาอยู่ที่ compactMap แล้ว ปัจจุบัน:

  • flatMap — แผ่ลำดับที่ซ้อนกัน
  • compactMap — นำ nil ออกจากผลลัพธ์แบบออปชันนัล

การแผ่คำเป็นอักขระ

ขยายสตริงแต่ละตัวออกเป็นอักขระ:

let words = ["hi", "yo"]
let chars = words.flatMap { Array($0) }
print(chars)  // ["h", "i", "y", "o"]

การรวมผลลัพธ์ย่อย

รวบรวมรายการจากออบเจ็กต์แบบจำลองที่ซ้อนกัน:

struct Team { let members: [String] }
let teams = [Team(members: ["Ann", "Bo"]), Team(members: ["Cy"])]
let all = teams.flatMap { $0.members }
print(all)  // ["Ann", "Bo", "Cy"]

การต่อการแปลงเข้าด้วยกัน

พลังที่แท้จริงเกิดจากการต่อการทำงานเข้าด้วยกัน: map, filter, flatMap และ reduce จะอ่านจากบนลงล่างเป็นสายการประมวลผลข้อมูล แต่ละขั้นตอนสร้างลำดับใหม่ให้ขั้นตอนถัดไป

สายการประมวลผลแบบครบวงจร

กรองข้อมูล แผ่โครงสร้าง แปลงข้อมูล แล้วหาผลรวม:

let groups = [[1, 2, 3], [4, 5], [6]]
let result = groups
    .flatMap { $0 }
    .filter { $0 % 2 == 0 }
    .map { $0 * $0 }
    .reduce(0, +)
print(result)  // 4 + 16 + 36 = 56

flatMap แล้วจึง compactMap

แผ่โครงสร้างก่อน แล้วเก็บไว้เฉพาะค่าที่แยกวิเคราะห์ได้:

let rows = [["1", "x"], ["3", "4"]]
let nums = rows
    .flatMap { $0 }
    .compactMap { Int($0) }
print(nums)  // [1, 3, 4]

การทำให้สายการทำงานอ่านง่าย

วางแต่ละขั้นตอนไว้คนละบรรทัด และตั้งชื่อผลลัพธ์ระหว่างทางเมื่อสายการทำงานยาวขึ้น ความอ่านง่ายสำคัญกว่าการบีบทุกอย่างไว้ในนิพจน์เดียว

let names = ["ann", "BO", "cy"]
let titled = names
    .map { $0.lowercased() }
    .map { $0.capitalized }
    .sorted()
print(titled)  // ["Ann", "Bo", "Cy"]

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

[[1, 2], [3]].flatMap { $0 } คืนค่าอะไร

สรุป

คุณได้เรียนรู้การแผ่โครงสร้างและการต่อการทำงานแล้ว:

  • flatMap แผ่ลำดับที่ซ้อนกันออกหนึ่งระดับ
  • ใช้ compactMap (ไม่ใช่ flatMap) เพื่อนำออปชันนัลออก
  • ต่อ filter / map / flatMap / reduce เป็นสายการประมวลผลที่อ่านง่าย
  • การวางหนึ่งขั้นตอนต่อหนึ่งบรรทัดช่วยให้สายการทำงานยาว ๆ อ่านได้ชัดเจน

จบหลักสูตรแล้ว! ถัดไป: ลำดับแบบเลื่อนการประเมิน

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

บทเรียน “flatMap และการเชื่อมต่อ” ฟรีหรือไม่

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

คุณจะเรียนรู้อะไรในบทเรียน “flatMap และการเชื่อมต่อ”

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

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

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

บทเรียน “flatMap และการเชื่อมต่อ” ใช้เวลานานแค่ไหน

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

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

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

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

  1. map และ compactMap
  2. filter และเพรดิเคต
  3. reduce และ reduce(into:)
  4. flatMap และการเชื่อมต่อ
← กลับไปที่ Swift Academy