ทบทวนซับสคริปต์และดัชนีแบบกำหนดเอง
กำหนดซับสคริปต์ด้วย get / set รับหลายพารามิเตอร์ (เช่น เมทริกซ์ 2 มิติ) และใช้ ชนิดดัชนีแบบกำหนดเอง (เอนัม) เพื่อสร้าง API ที่อ่านง่าย
ทบทวนซับสคริปต์และดัชนีแบบกำหนดเอง เป็นบทเรียน Swift Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 2 จากทั้งหมด 3 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Swift Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Swift Academy มีบทเรียนทั้งหมด 3 บทเรียน
ซับสคริปต์คืออะไร
ซับสคริปต์ช่วยให้สามารถเข้าถึงอินสแตนซ์ด้วยดัชนีได้เหมือนอาร์เรย์ คุณสามารถ:
- เปิดให้เข้าถึงแบบอ่านอย่างเดียวหรืออ่านและเขียน
- รับพารามิเตอร์หลายตัว (เช่น แถว/คอลัมน์)
- ใช้ดัชนีแบบกำหนดเอง เช่น enum เพื่อให้เข้าใจได้ชัดเจน
ซับสคริปต์แบบอ่านอย่างเดียว
ซับสคริปต์สามารถเป็นแบบอ่านอย่างเดียวได้ โดยคืนค่าโดยไม่มี set
struct TimesTable {
let multiplier: Int
subscript(index: Int) -> Int { multiplier * index } // read-only
}
let t = TimesTable(multiplier: 3)
print(t[4]) // 12การอ่านและเขียนด้วย get/set
เพิ่ม get/set เพื่อเปิดให้เข้าถึงแบบอ่านและเขียน ตรวจสอบดัชนีเพื่อป้องกันการหยุดทำงานจากข้อผิดพลาด
struct SafeArray<T> {
private var storage: [T]
init(_ xs: [T]) { self.storage = xs }
subscript(i: Int) -> T? {
get { (0..<storage.count).contains(i) ? storage[i] : nil }
set {
guard let v = newValue, (0..<storage.count).contains(i) else { return }
storage[i] = v
}
}
}
var s = SafeArray([10,20,30])
print(s[1] ?? -1) // 20
s[1] = 99
print(s[1] ?? -1) // 99
s[5] = 7 // ignored (out of range)การเข้าถึงด้วยดัชนี 2 มิติ
ซับสคริปต์สามารถรับพารามิเตอร์หลายตัวและใช้ป้ายกำกับเพื่อให้เข้าใจได้ชัดเจน (เช่น row/col)
struct Matrix {
let rows: Int, cols: Int
private var grid: [Int]
init(_ r: Int, _ c: Int, fill: Int = 0) {
rows = r; cols = c; grid = Array(repeating: fill, count: r * c)
}
private func valid(_ r: Int, _ c: Int) -> Bool { r >= 0 && r < rows && c >= 0 && c < cols }
subscript(row r: Int, col c: Int) -> Int {
get { precondition(valid(r,c), "Index out of range"); return grid[r*cols + c] }
set { precondition(valid(r,c), "Index out of range"); grid[r*cols + c] = newValue }
}
}
var m = Matrix(2, 3)
m[row: 0, col: 1] = 5
print(m[row: 0, col: 1]) // 5ดัชนีแบบกำหนดเอง (enum)
ใช้ดัชนีแบบกำหนดเองเพื่อให้เจตนาของโค้ดชัดเจน enum สามารถจับคู่กับพื้นที่จัดเก็บข้อมูล พร้อมคงอินเทอร์เฟซให้สื่อความหมายได้
enum Day: Int, CaseIterable { case mon = 0, tue, wed, thu, fri, sat, sun }
struct Week {
private var tasks = Array(repeating: "—", count: Day.allCases.count)
subscript(day: Day) -> String {
get { tasks[day.rawValue] }
set { tasks[day.rawValue] = newValue }
}
}
var w = Week()
w[.wed] = "Ship"
print(w[.wed])เคล็ดลับการออกแบบ
เคล็ดลับ:
- เลือกใช้ซับสคริปต์สำหรับการเข้าถึงสมาชิก และใช้เมธอดสำหรับการดำเนินการ
- ตรวจสอบดัชนี (ด้วย assert/precondition หรือตัวเลือกที่ปลอดภัย)
- ตั้งชื่อพารามิเตอร์สำหรับการเข้าถึงหลายแกน
- ทำให้ซับสคริปต์ทำงานรวดเร็วและคาดเดาได้
การประกาศแบบอ่านและเขียน
ตรวจสอบอย่างรวดเร็ว: การประกาศใดเป็นการประกาศซับสคริปต์แบบอ่านและเขียน
สรุป
สรุป: สร้างซับสคริปต์แบบอ่านอย่างเดียวและอ่านและเขียน รับพารามิเตอร์หลายตัว (เช่น เมทริกซ์) และเลือกใช้ดัชนีแบบกำหนดเอง (enum) เพื่อให้อ่านง่ายและปลอดภัย
เรียนรู้ Swift ด้วย AI tutor — ฟรี
เขียนและเรียกใช้โค้ดจริงในเบราว์เซอร์ของคุณ รับความช่วยเหลือทันทีจาก AI tutor 24/7 และเรียนรู้ต่อจากที่คุณหยุดบนเว็บหรือในแอป
- คอร์ส
- 122
- บทเรียน
- 409
คำถามที่พบบ่อย
บทเรียน “ทบทวนซับสคริปต์และดัชนีแบบกำหนดเอง” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “ทบทวนซับสคริปต์และดัชนีแบบกำหนดเอง” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Swift Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Swift Academy มีบทเรียนทั้งหมด 3 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “ทบทวนซับสคริปต์และดัชนีแบบกำหนดเอง”
กำหนดซับสคริปต์ด้วย get / set รับหลายพารามิเตอร์ (เช่น เมทริกซ์ 2 มิติ) และใช้ ชนิดดัชนีแบบกำหนดเอง (เอนัม) เพื่อสร้าง API ที่อ่านง่าย คุณปฏิบัติ Swift Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Swift Academy หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน Swift Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 2 จากทั้งหมด 3 บทเรียน
บทเรียน “ทบทวนซับสคริปต์และดัชนีแบบกำหนดเอง” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน Swift Academy นี้ได้ไหม
ได้ บทเรียน Swift Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- การโอเวอร์โหลดตัวดำเนินการและกลุ่มลำดับความสำคัญ
- ทบทวนซับสคริปต์และดัชนีแบบกำหนดเอง
- การสร้าง Hashable/Equatable/Comparable