Swift Academy · บทเรียน

ลำดับชั้น Sequence/Collection

ทำความเข้าใจ Sequence กับ Collection (รวมถึง Bidirectional/RandomAccess) ในด้านการรับประกันการวนผ่าน ดัชนี และเวลาที่อัลกอริทึมต้องใช้โปรโตคอลที่มีความสามารถสูงกว่า

บทเรียน 1 จาก 38 ขั้นตอน

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

แผนผังลำดับชั้น

ลำดับชั้นของการวนซ้ำ:

  • ลำดับ: วนซ้ำผ่านตัววนซ้ำได้ (อาจวนได้เพียงรอบเดียว)
  • คอลเลกชัน: วนซ้ำได้หลายรอบและเข้าถึงด้วยดัชนี (startIndex/endIndex)
  • BidirectionalCollection: เลื่อนดัชนีย้อนกลับได้
  • RandomAccessCollection: เลื่อนดัชนีโดยใช้เวลาคงที่

การวนซ้ำลำดับ

ลำดับรับประกันว่าคุณสามารถวนซ้ำสมาชิกตามลำดับได้ แต่ไม่จำเป็นต้องรับประกันเรื่องดัชนีหรือการวนซ้ำหลายรอบ

let seq = [1, 2, 3] as AnySequence<Int>    // wrap as AnySequence for demo
for x in seq { print(x, terminator: " ") }
print("")

ดัชนีของคอลเลกชัน

คอลเลกชันเพิ่ม ดัชนี และอนุญาตให้วนซ้ำแบบ หลายรอบ คุณจึงวนซ้ำใหม่ได้อย่างปลอดภัย

let arr = ["a","b","c"]          // Array is a Collection
print(arr.startIndex == 0)            // true for Array
print(arr.endIndex == 3)              // endIndex is "one past last"
for i in arr.indices { print(arr[i], terminator: " ") }
print("")
// Iterate again (multi-pass)
for ch in arr { print(ch, terminator: " ") }
print("")

ความสามารถที่มากขึ้น

BidirectionalCollection สามารถเลื่อนดัชนีย้อนกลับได้ ส่วน RandomAccessCollection รองรับการเลื่อนดัชนีโดยใช้เวลาคงที่ (เช่น อาร์เรย์)

let text = "Swift"                         // String is a BidirectionalCollection
var i = text.index(before: text.endIndex)       // move backward
print(text[i])                                   // last character
// Array is RandomAccessCollection: jumping indices is cheap
let nums = [10,20,30,40]
print(nums[nums.startIndex.advanced(by: 2)])     // 30

ลำดับแบบกำหนดเอง

ลำดับแบบกำหนดเองอาจวนซ้ำได้ เพียงรอบเดียว หลังจากวนซ้ำหนึ่งครั้ง ตัววนซ้ำอาจหมดข้อมูล

struct Countdown: Sequence, IteratorProtocol {
    var current: Int
    mutating func next() -> Int? {
        guard current >= 0 else { return nil }
        defer { current -= 1 }
        return current
    }
}
var cd = Countdown(current: 3)
for n in cd { print(n, terminator: " ") }   // 3 2 1 0
print("")
// cd is exhausted; iterating again yields nothing (single-pass behavior)

เลือกโปรโตคอลที่เหมาะสม

แนวทาง:

  • ใช้อัลกอริทึมเจเนอริกกับ ลำดับ เมื่อการวนซ้ำเพียงรอบเดียวเพียงพอ
  • กำหนดให้เป็น คอลเลกชันเมื่อจำเป็นต้องวนซ้ำหลายรอบหรือใช้การดำเนินการกับดัชนี
  • ควรใช้ RandomAccessCollection สำหรับอัลกอริทึมที่เลื่อนดัชนีบ่อย (เช่น การค้นหาแบบทวิภาค)

คอลเลกชันเทียบกับลำดับ

ตรวจสอบสั้น ๆ: คอลเลกชันเพิ่มอะไรจากลำดับ

สรุป

สรุป: ลำดับ → การวนซ้ำพื้นฐาน คอลเลกชัน → ดัชนี + การวนซ้ำหลายรอบ แบบสองทิศทาง → เลื่อนย้อนกลับได้ การเข้าถึงแบบสุ่ม → เลื่อนดัชนีโดยใช้เวลาคงที่ เลือกโปรโตคอลที่เล็กที่สุดซึ่งเหมาะกับอัลกอริทึมของคุณ

เริ่มต้นได้ฟรี

เรียนรู้ Swift ด้วย AI tutor — ฟรี

เขียนและเรียกใช้โค้ดจริงในเบราว์เซอร์ของคุณ รับความช่วยเหลือทันทีจาก AI tutor 24/7 และเรียนรู้ต่อจากที่คุณหยุดบนเว็บหรือในแอป

คอร์ส
122
บทเรียน
409

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

บทเรียน “ลำดับชั้น Sequence/Collection” ฟรีหรือไม่

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

คุณจะเรียนรู้อะไรในบทเรียน “ลำดับชั้น Sequence/Collection”

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

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

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

บทเรียน “ลำดับชั้น Sequence/Collection” ใช้เวลานานแค่ไหน

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

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

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

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

  1. ลำดับชั้น Sequence/Collection
  2. Map/Filter/Reduce และลำดับแบบ lazy
  3. ตัววนซ้ำแบบกำหนดเองและเคล็ดลับด้านประสิทธิภาพ
← กลับไปที่ Swift Academy