การแปลงส่วนตัดกลับเป็นอาร์เรย์
สร้างอาร์เรย์อิสระจากส่วนตัด
การแปลงส่วนตัดกลับเป็นอาร์เรย์ เป็นบทเรียน Swift Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 3 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Swift Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Swift Academy มีบทเรียนทั้งหมด 4 บทเรียน
slice ไม่ใช่อาร์เรย์
ArraySlice เป็นชนิดข้อมูลที่แตกต่างจาก Array ส่วนติดต่อการใช้งานจำนวนมากต้องการ Array โดยตรง ดังนั้นคุณจึงมักต้องแปลงชนิดข้อมูล
let original = [1, 2, 3, 4, 5]
let slice = original[1..<4]
print(type(of: slice))Array(slice)
ห่อ slice ด้วยตัวสร้าง Array(...) เพื่อสร้างอาร์เรย์ใหม่ที่เป็นอิสระ มีการคัดลอกองค์ประกอบ และมีดัชนีเริ่มจากศูนย์
let original = [10, 20, 30, 40, 50]
let slice = original[2..<5]
let array = Array(slice)
print(array)
print(type(of: array))ดัชนีเริ่มใหม่จากศูนย์
หลังการแปลง อาร์เรย์ใหม่จะเริ่มดัชนีจาก 0 ต่างจาก slice ที่เก็บดัชนีของอาร์เรย์หลักไว้
let original = [1, 2, 3, 4, 5]
let slice = original[3..<5]
let copy = Array(slice)
print("slice start:", slice.startIndex)
print("array start:", copy.startIndex)การแปลงจะคัดลอกพื้นที่จัดเก็บ
การแปลงจะบังคับให้เกิดการคัดลอก อาร์เรย์ใหม่จะไม่ใช้พื้นที่จัดเก็บร่วมกับอาร์เรย์หลักอีกต่อไป ดังนั้นการแก้ไขอาร์เรย์ใหม่จึงไม่ส่งผลต่ออาร์เรย์ต้นฉบับ
let original = [1, 2, 3, 4]
var copy = Array(original[1..<3])
copy[0] = 999
print("original:", original)
print("copy:", copy)การส่งคืนอาร์เรย์จากฟังก์ชัน
เมื่อฟังก์ชันส่งคืนบางส่วนของอาร์เรย์ ให้แปลง slice เพื่อให้ผู้เรียกได้รับ Array ปกติ
func firstThree(of nums: [Int]) -> [Int] {
return Array(nums.prefix(3))
}
print(firstThree(of: [9, 8, 7, 6, 5]))การส่งค่าไปยังพารามิเตอร์อาร์เรย์
หากพารามิเตอร์ของส่วนติดต่อการใช้งานมีชนิดเป็น [Int] คุณต้องแปลง slice ก่อนส่งค่าไปให้
func total(_ values: [Int]) -> Int {
return values.reduce(0, +)
}
let data = [1, 2, 3, 4, 5]
let result = total(Array(data[1..<4]))
print(result)เมื่อไม่จำเป็นต้องแปลง
หากฟังก์ชันของคุณรับ Sequence หรือ Collection แบบทั่วไป คุณสามารถส่งส่วนย่อยเข้าไปได้โดยตรงโดยไม่ต้องแปลง
func describe<S: Sequence>(_ s: S) where S.Element == Int {
print(Array(s))
}
let arr = [2, 4, 6, 8]
describe(arr[1..<3])การแลกเปลี่ยนด้านหน่วยความจำ
ส่วนย่อยหลีกเลี่ยงการคัดลอกและทำให้พื้นที่จัดเก็บของอาร์เรย์แม่ยังคงอยู่ หากคุณเก็บส่วนย่อยขนาด small ของอาร์เรย์ขนาด huge ไว้เป็นเวลานาน ให้แปลงเป็นอาร์เรย์เพื่อให้บัฟเฟอร์ขนาด big ถูกคืนหน่วยความจำ
let huge = Array(1...1000)
let keep = Array(huge[0..<3]) // small independent copy
print(keep)การแปลงเป็น Set
คุณยังสามารถส่งส่วนย่อยให้ตัวสร้างคอลเลกชันอื่น ๆ เช่น Set ได้ด้วย
let arr = [1, 2, 2, 3, 3, 3]
let uniqueTail = Set(arr[2..<6])
print(uniqueTail.sorted())การแปลงไปกลับ
การตัดเป็นส่วนย่อย แล้วแปลง จากนั้นตัดเป็นส่วนย่อยอีกครั้งนั้นทำได้อย่างสมบูรณ์ การแปลงแต่ละครั้งชัดเจนและคาดเดาได้
let arr = [10, 20, 30, 40, 50]
let a = Array(arr[1..<4])
let b = Array(a[0..<2])
print(a)
print(b)แนวทางปฏิบัติที่ดี
ให้ทำงานกับส่วนย่อยระหว่างการคำนวณ และแปลงเป็น Array เฉพาะตรงขอบเขตที่คุณจัดเก็บหรือส่งคืนผลลัพธ์
let arr = [3, 1, 4, 1, 5, 9, 2]
let top3 = Array(arr.sorted(by: >)[0..<3])
print(top3)ตรวจสอบความเข้าใจ
ทดสอบการแปลงส่วนย่อย
สรุปทบทวน
ใช้ Array(slice) เพื่อเปลี่ยน ArraySlice ให้เป็นอาร์เรย์อิสระที่มีดัชนีเริ่มจากศูนย์และพื้นที่จัดเก็บที่คัดลอกมา ให้แปลงตรงขอบเขตของส่วนติดต่อโปรแกรม และใช้ส่วนย่อยระหว่างการคำนวณเพื่อหลีกเลี่ยงการคัดลอกเพิ่มเติม
let s = [1, 2, 3, 4, 5][2..<5]
let a = Array(s)
print(a, a.startIndex)เรียนรู้ Swift ด้วย AI tutor — ฟรี
เขียนและเรียกใช้โค้ดจริงในเบราว์เซอร์ของคุณ รับความช่วยเหลือทันทีจาก AI tutor 24/7 และเรียนรู้ต่อจากที่คุณหยุดบนเว็บหรือในแอป
- คอร์ส
- 122
- บทเรียน
- 409
คำถามที่พบบ่อย
บทเรียน “การแปลงส่วนตัดกลับเป็นอาร์เรย์” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “การแปลงส่วนตัดกลับเป็นอาร์เรย์” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Swift Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Swift Academy มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “การแปลงส่วนตัดกลับเป็นอาร์เรย์”
สร้างอาร์เรย์อิสระจากส่วนตัด คุณปฏิบัติ Swift Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Swift Academy หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน Swift Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 3 จากทั้งหมด 4 บทเรียน
บทเรียน “การแปลงส่วนตัดกลับเป็นอาร์เรย์” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน Swift Academy นี้ได้ไหม
ได้ บทเรียน Swift Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- การสร้างส่วนตัดด้วยช่วงค่า
- ความหมายของดัชนีใน ArraySlice
- การแปลงส่วนตัดกลับเป็นอาร์เรย์
- prefix, suffix และ dropFirst