ลำดับชั้น Sequence/Collection
ทำความเข้าใจ Sequence กับ Collection (รวมถึง Bidirectional/RandomAccess) ในด้านการรับประกันการวนผ่าน ดัชนี และเวลาที่อัลกอริทึมต้องใช้โปรโตคอลที่มีความสามารถสูงกว่า
ลำดับชั้น 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 ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- ลำดับชั้น Sequence/Collection
- Map/Filter/Reduce และลำดับแบบ lazy
- ตัววนซ้ำแบบกำหนดเองและเคล็ดลับด้านประสิทธิภาพ