ช่วงค่าในฐานะคอลเลกชัน
ใช้ map และ filter กับลำดับของช่วงค่า
ช่วงค่าในฐานะคอลเลกชัน เป็นบทเรียน Swift Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Swift Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Swift Academy มีบทเรียนทั้งหมด 4 บทเรียน
ช่วงคือลำดับ
ช่วงไม่ได้เป็นเพียงส่วนหนึ่งของลำดับตัวเลขเท่านั้น แต่ยังเป็นลำดับที่คุณแปลงได้ด้วยเมธอดของคอลเลกชัน เช่น map และ filter
let squares = (1...5).map { $0 * $0 }
print(squares)การแปลงค่าช่วงด้วย map
(1...n).map { ... } แปลงตัวเลขแต่ละตัวเป็นค่าใหม่และสร้างอาร์เรย์ โปรดสังเกตวงเล็บรอบช่วง
let doubled = (1...4).map { $0 * 2 }
print(doubled)เหตุใดจึงต้องใส่วงเล็บ
คุณต้องใส่ช่วงไว้ในวงเล็บก่อนเรียกใช้เมธอด มิฉะนั้น Swift จะตีความไวยากรณ์ผิด (1...5).map จึงเป็นรูปแบบที่ถูกต้อง
let labels = (1...3).map { "Item \($0)" }
print(labels)การกรองช่วง
filter จะเก็บเฉพาะค่าที่ตรงตามเงื่อนไข และส่งคืนอาร์เรย์ของค่าที่ตรงกัน
let evens = (1...10).filter { $0 % 2 == 0 }
print(evens)การรวมค่าช่วง
reduce จะรวมค่าทั้งหมดให้เหลือค่าเดียว ในที่นี้เราหาผลรวมของตัวเลขตั้งแต่ 1 ถึง 100
let total = (1...100).reduce(0, +)
print(total)การแปลงเป็นอาร์เรย์
การห่อช่วงด้วย Array(...) จะสร้างค่าทุกค่าให้เป็นอาร์เรย์ที่จัดเก็บไว้จริง
let nums = Array(1...5)
print(nums)
print(nums.count)forEach กับช่วง
คุณสามารถเรียกใช้ forEach เพื่อทำงานแบบปิดสำหรับแต่ละค่า ซึ่งคล้ายกับลูป for
(1...3).forEach { n in
print("Tick \(n)")
}การเชื่อมการทำงาน
เนื่องจากการทำงานแต่ละรายการส่งคืนคอลเลกชัน คุณจึงสามารถเชื่อม filter ต่อด้วย map ได้
let result = (1...10).filter { $0 % 2 == 0 }.map { $0 * $0 }
print(result)การสร้างข้อมูลสำหรับค้นหา
การแปลงค่าช่วงด้วย map เป็นวิธีที่รวดเร็วในการสร้างข้อมูลทดสอบหรือตารางค้นหา
let table = (1...5).map { (n: $0, square: $0 * $0) }
for row in table {
print("\(row.n) -> \(row.square)")
}contains และการรวมค่า
ช่วงยังรองรับการสืบค้นแบบรวมค่า เช่น contains, min และ max ด้วย
let r = 5...15
print(r.contains(10))
print(r.min() ?? 0)
print(r.max() ?? 0)การนับค่าที่ตรงเงื่อนไข
ใช้ filter ร่วมกับ count เพื่อนับจำนวนค่าที่ตรงตามเงื่อนไข
let multiplesOf3 = (1...30).filter { $0 % 3 == 0 }.count
print(multiplesOf3)ตรวจสอบความเข้าใจ
ทดสอบการใช้ช่วงเป็นคอลเลกชัน
สรุป: ช่วงในฐานะคอลเลกชัน
ช่วงเป็นลำดับ คุณจึงสามารถเรียกใช้ map, filter, reduce และ forEach กับช่วงได้ (อย่าลืมใส่วงเล็บ) ใช้ Array(range) เพื่อสร้างค่าเหล่านั้นให้เป็นค่าที่จัดเก็บไว้จริง
print((1...5).map { $0 * $0 })คำถามที่พบบ่อย
บทเรียน “ช่วงค่าในฐานะคอลเลกชัน” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “ช่วงค่าในฐานะคอลเลกชัน” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Swift Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Swift Academy มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “ช่วงค่าในฐานะคอลเลกชัน”
ใช้ map และ filter กับลำดับของช่วงค่า คุณปฏิบัติ Swift Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Swift Academy หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน Swift Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน
บทเรียน “ช่วงค่าในฐานะคอลเลกชัน” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน Swift Academy นี้ได้ไหม
ได้ บทเรียน Swift Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- ช่วงปิดและช่วงเปิดด้านท้าย
- ช่วงที่มีด้านเดียว
- การนับด้วย stride(from:to:by:)
- ช่วงค่าในฐานะคอลเลกชัน