พารามิเตอร์ in-out และพื้นฐานการจัดการข้อผิดพลาด (throws)
เปลี่ยนแปลงอาร์กิวเมนต์ด้วยพารามิเตอร์ in-out และจัดการความล้มเหลวที่กู้คืนได้ด้วย throws, try และ do/catch
พารามิเตอร์ in-out และพื้นฐานการจัดการข้อผิดพลาด (throws) เป็นบทเรียน Swift Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 3 จากทั้งหมด 3 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Swift Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Swift Academy มีบทเรียนทั้งหมด 3 บทเรียน
บทนำ
บทเรียนนี้ครอบคลุมพารามิเตอร์แบบ อินเอาต์ (ใช้เปลี่ยนแปลงตัวแปรของผู้เรียก) และการจัดการข้อผิดพลาดเบื้องต้นด้วย การโยนข้อผิดพลาด, การลอง และ การทำ/จับ
พื้นฐานอินเอาต์
อินเอาต์ทำให้ฟังก์ชันเปลี่ยนแปลงตัวแปรของผู้เรียกได้ เรียกใช้ด้วย &name
func increment(_ value: inout Int) {
value += 1 // mutate caller's variable
}
var count = 0
increment(&count)
print("count =", count) // 1ควรใช้เมื่อใด
ใช้ อินเอาต์ อย่างพอเหมาะ:
- เหมาะกับการเปลี่ยนค่าอย่างง่าย เช่น ตัวนับ
- ควรคืนค่าใหม่เพื่อให้โค้ดอ่านเข้าใจง่ายและทดสอบได้
การโยนข้อผิดพลาดและการทำ/จับ
ระบุฟังก์ชันที่อาจล้มเหลวด้วย การโยนข้อผิดพลาด ใช้ การทำ/ลอง/จับ เพื่อจัดการข้อผิดพลาด
enum FileError: Error { case notFound, unreadable }
func readFile(named: String) throws -> String {
if named.isEmpty { throw FileError.notFound }
return "contents of \\(named)"
}
// Calling a throwing function
do {
let text = try readFile(named: "notes.txt")
print(text)
} catch {
print("Failed:", error)
}ลอง? เทียบกับ ลอง!
ลอง? เปลี่ยนข้อผิดพลาดเป็น nil (ค่าเลือกได้) ส่วน ลอง! จะทำให้โปรแกรมหยุดทำงานเมื่อเกิดข้อผิดพลาด จึงควรหลีกเลี่ยงเว้นแต่จะแน่ใจอย่างยิ่ง
// try? converts errors to nil (optional)
let maybeText = try? readFile(named: "")
print(maybeText as Any) // nil
// try! crashes on error—only use when you are sure
// let forcedText = try! readFile(named: "") // avoid in productionตัวช่วยที่โยนข้อผิดพลาด
คุณสามารถโยนข้อผิดพลาดจากฟังก์ชันตัวช่วยได้ ควรใช้ชนิดแจกแจงขนาดเล็กสำหรับข้อผิดพลาดที่กำหนดเอง และหลีกเลี่ยง NSError ดิบเว้นแต่จำเป็น
func parseInt(_ s: String) throws -> Int {
if let n = Int(s) { return n }
else { throw NSError(domain: "Parse", code: 1) }
}
do {
let n = try parseInt("10")
print("n =", n)
} catch {
print("parse error")
}คำถามเรื่องอินเอาต์
ตรวจสอบอย่างรวดเร็ว: อินเอาต์ หมายถึงอะไรสำหรับพารามิเตอร์
สรุปทบทวน
สรุปทบทวน: ใช้ อินเอาต์ เพื่อเปลี่ยนค่าโดยตรงอย่างพอเหมาะ จัดการความล้มเหลวด้วย การโยนข้อผิดพลาด, การลอง และ การทำ/จับ ควรใช้ การลอง? สำหรับผลลัพธ์ที่เลือกได้ และหลีกเลี่ยง การลอง! ในโปรแกรมจริง
คำถามที่พบบ่อย
บทเรียน “พารามิเตอร์ in-out และพื้นฐานการจัดการข้อผิดพลาด (throws)” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “พารามิเตอร์ in-out และพื้นฐานการจัดการข้อผิดพลาด (throws)” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Swift Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Swift Academy มีบทเรียนทั้งหมด 3 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “พารามิเตอร์ in-out และพื้นฐานการจัดการข้อผิดพลาด (throws)”
เปลี่ยนแปลงอาร์กิวเมนต์ด้วยพารามิเตอร์ in-out และจัดการความล้มเหลวที่กู้คืนได้ด้วย throws, try และ do/catch คุณปฏิบัติ Swift Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Swift Academy หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน Swift Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 3 จากทั้งหมด 3 บทเรียน
บทเรียน “พารามิเตอร์ in-out และพื้นฐานการจัดการข้อผิดพลาด (throws)” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน Swift Academy นี้ได้ไหม
ได้ บทเรียน Swift Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- การกำหนดฟังก์ชัน พารามิเตอร์ ป้ายกำกับ ค่าเริ่มต้น และอาร์กิวเมนต์แปรผัน
- ค่าที่ส่งกลับและการส่งกลับหลายค่าผ่านทูเพิล
- พารามิเตอร์ in-out และพื้นฐานการจัดการข้อผิดพลาด (throws)