พื้นฐานคลอสเชอร์และการจับค่า
ทำความเข้าใจไวยากรณ์คลอสเชอร์ อาร์กิวเมนต์แบบย่อ คลอสเชอร์ต่อท้าย รายการจับค่า และความแตกต่างระหว่างแบบ escaping กับไม่ escaping
พื้นฐานคลอสเชอร์และการจับค่า เป็นบทเรียน Swift Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 1 จากทั้งหมด 3 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Swift Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Swift Academy มีบทเรียนทั้งหมด 3 บทเรียน
บทนำ
บทเรียนนี้แนะนำคลอเชอร์: บล็อกโค้ดที่ทำงานได้ในตัวและส่งต่อไปใช้งานได้ โดยจะสำรวจไวยากรณ์ อาร์กิวเมนต์แบบย่อ คลอเชอร์ต่อท้าย รายการจับค่า และคลอเชอร์แบบหลุดพ้นกับแบบไม่หลุดพ้น
ไวยากรณ์คลอเชอร์
คลอเชอร์มีลักษณะคล้ายฟังก์ชันขนาดกะทัดรัด ไวยากรณ์คือ { (params) -> Return in ... }
let greet = { (name: String) -> String in
return "Hello, \\(name)"
}
print(greet("Ada"))อาร์กิวเมนต์แบบย่อ
Swift มีอาร์กิวเมนต์แบบย่อ เช่น $0 และ $1 เพื่อทำให้คลอเชอร์กระชับขึ้น
let doubled = [1,2,3].map { $0 * 2 }
print(doubled)คลอเชอร์ต่อท้าย
หากคลอเชอร์เป็นอาร์กิวเมนต์ตัวสุดท้าย คุณสามารถเขียนคลอเชอร์ไว้นอกวงเล็บได้ ซึ่งเรียกว่าคลอเชอร์ต่อท้าย
func operate(_ x: Int, _ y: Int, _ f: (Int,Int)->Int) -> Int {
return f(x,y)
}
let sum = operate(2,3) { $0 + $1 }
print(sum)พื้นฐานการจับค่า
คลอเชอร์จับค่าจากขอบเขตโดยรอบ เช่น ตัวนับที่เพิ่มขึ้นต่อเนื่อง
func makeCounter() -> () -> Int {
var count = 0
return {
count += 1
return count
}
}
let counter = makeCounter()
print(counter()) // 1
print(counter()) // 2รายการจับค่าและคลอเชอร์แบบหลุดพ้น
ใช้รายการจับค่า เช่น [weak self] เพื่อหลีกเลี่ยงวงจรการคงการอ้างอิง คลอเชอร์เป็นแบบไม่หลุดพ้นโดยค่าเริ่มต้น ให้ทำเครื่องหมายด้วย @escaping หากจัดเก็บคลอเชอร์ไว้นอกการเรียกใช้
class Greeter {
var name = "Ada"
lazy var greet: () -> Void = { [weak self] in
print("Hello", self?.name ?? "?")
}
}
let g = Greeter()
g.greet()คำถามเกี่ยวกับรายการจับค่า
ตรวจสอบอย่างรวดเร็ว: รายการจับค่ามีหน้าที่อะไร
สรุปทบทวน
สรุปทบทวน: คลอเชอร์คือบล็อกโค้ดแบบแทรกในบรรทัด เรียนรู้ไวยากรณ์ อาร์กิวเมนต์แบบย่อ คลอเชอร์ต่อท้าย และควบคุมการจับค่าด้วยรายการจับค่า คลอเชอร์แบบหลุดพ้นมีอายุยาวนานกว่าการเรียกใช้ ส่วนแบบไม่หลุดพ้นเป็นค่าเริ่มต้น
คำถามที่พบบ่อย
บทเรียน “พื้นฐานคลอสเชอร์และการจับค่า” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “พื้นฐานคลอสเชอร์และการจับค่า” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Swift Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Swift Academy มีบทเรียนทั้งหมด 3 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “พื้นฐานคลอสเชอร์และการจับค่า”
ทำความเข้าใจไวยากรณ์คลอสเชอร์ อาร์กิวเมนต์แบบย่อ คลอสเชอร์ต่อท้าย รายการจับค่า และความแตกต่างระหว่างแบบ escaping กับไม่ escaping คุณปฏิบัติ Swift Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Swift Academy หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน Swift Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 1 จากทั้งหมด 3 บทเรียน
บทเรียน “พื้นฐานคลอสเชอร์และการจับค่า” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน Swift Academy นี้ได้ไหม
ได้ บทเรียน Swift Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- พื้นฐานคลอสเชอร์และการจับค่า
- รายการจับค่า — weak/unowned และการจับค่า
- แบบ escaping กับไม่ escaping และออโตคลอสเชอร์