Map/Filter/Reduce และลำดับแบบ lazy
ใช้ map / filter / reduce เพื่อแปลง เลือก และรวมค่า จากนั้นเพิ่ม .lazy เพื่อเลื่อนการทำงานและหลีกเลี่ยงอาร์เรย์ชั่วคราว
Map/Filter/Reduce และลำดับแบบ lazy เป็นบทเรียน Swift Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 2 จากทั้งหมด 3 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Swift Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Swift Academy มีบทเรียนทั้งหมด 3 บทเรียน
แนวคิดหลัก
อัลกอริทึมหลัก:
- การแปลง: แปลงสมาชิกแต่ละรายการ
- การกรอง: เก็บสมาชิกที่ตรงกับเงื่อนไข
- reduce: รวมให้เป็นค่าเดียว
- การประเมินแบบเลื่อนเวลา: เลื่อนการทำงานออกไปเพื่อหลีกเลี่ยงอาร์เรย์ชั่วคราว
การแปลง
การแปลงจะแปลงสมาชิกแต่ละรายการและส่งคืนอาร์เรย์ใหม่
let nums = [1, 2, 3]
let doubled = nums.map { $0 * 2 } // [2, 4, 6]
print(doubled)
let words = ["swift", "kit"]
let upper = words.map { $0.uppercased() } // ["SWIFT","KIT"]
print(upper)การกรอง
การกรองจะเก็บสมาชิกที่เงื่อนไขให้ผลเป็นจริง
let scores = [45, 72, 88, 53]
let passing = scores.filter { $0 >= 60 } // [72, 88]
print(passing)
let names = ["Ana","Li","Max"]
let short = names.filter { $0.count <= 2 } // ["Li"]
print(short)reduce
reduceจะรวมลำดับให้เป็นผลลัพธ์เดียว โดยใช้ค่าเริ่มต้นและคลอเชอร์สำหรับรวมผล
let total = [1,2,3,4].reduce(0) { acc, x in acc + x } // 10
print(total)
let joined = ["a","b","c"].reduce("") { $0 + $1 } // "abc"
print(joined)การทำงานแบบเลื่อนเวลาตามต้องการ
การประเมินแบบเลื่อนเวลาจะสร้างกระบวนการประมวลผลต่อเนื่องที่เลื่อนการทำงานออกไป: การดำเนินการจะทำงาน ขณะคุณใช้สมาชิก (เช่น ผ่าน prefix, first หรือการวนซ้ำ)
let range = 1...10
let lazyPipeline = range.lazy
.map { x in print("map", x); return x * x }
.filter { x in print("filter", x); return x % 2 == 0 }
// Only the first 3 results are needed:
let firstThree = Array(lazyPipeline.prefix(3))
print("result:", firstThree)
// Notice how only the work needed for 3 elements ran.เคล็ดลับ
เคล็ดลับ:
- เชื่อมการทำงาน แปลง → กรอง → reduce เพื่อให้กระแสข้อมูลชัดเจน
- เพิ่ม การประเมินแบบเลื่อนเวลา เมื่อใช้เพียงบางส่วนของกระบวนการประมวลผลต่อเนื่อง หรือต้องการหลีกเลี่ยงข้อมูลชั่วคราว
- สร้างเป็นค่าจริงด้วย
Array(...)เฉพาะเมื่อต้องการอาร์เรย์ที่เป็นรูปธรรม
ความหมายของการประเมินแบบเลื่อนเวลา
ตรวจสอบสั้น ๆ: .lazy มีผลอย่างไรต่อการเชื่อมการทำงานของการแปลง/การกรอง
สรุป
สรุป: ใช้ การแปลงเพื่อแปลงข้อมูล ใช้ การกรองเพื่อเลือกข้อมูล และใช้ reduceเพื่อรวมข้อมูล เพิ่ม การประเมินแบบเลื่อนเวลาเพื่อประเมินตามต้องการและลดการจัดสรรหน่วยความจำ
คำถามที่พบบ่อย
บทเรียน “Map/Filter/Reduce และลำดับแบบ lazy” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “Map/Filter/Reduce และลำดับแบบ lazy” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Swift Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Swift Academy มีบทเรียนทั้งหมด 3 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “Map/Filter/Reduce และลำดับแบบ lazy”
ใช้ map / filter / reduce เพื่อแปลง เลือก และรวมค่า จากนั้นเพิ่ม .lazy เพื่อเลื่อนการทำงานและหลีกเลี่ยงอาร์เรย์ชั่วคราว คุณปฏิบัติ Swift Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Swift Academy หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน Swift Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 2 จากทั้งหมด 3 บทเรียน
บทเรียน “Map/Filter/Reduce และลำดับแบบ lazy” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน Swift Academy นี้ได้ไหม
ได้ บทเรียน Swift Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- ลำดับชั้น Sequence/Collection
- Map/Filter/Reduce และลำดับแบบ lazy
- ตัววนซ้ำแบบกำหนดเองและเคล็ดลับด้านประสิทธิภาพ