ในสวิฟท์, วิธีการที่ฉันสามารถเขียนกรณีในงบสวิทช์ว่าการทดสอบเป็นค่าเปลี่ยนกับเนื้อหาของนั้นไม่จำเป็นกระโดดกว่าในกรณีที่จำเป็นมีnil
?
นี่คือวิธีที่ฉันคิดว่าสิ่งนี้อาจมีลักษณะ:
let someValue = 5
let someOptional: Int? = nil
switch someValue {
case someOptional:
// someOptional is non-nil, and someValue equals the unwrapped contents of someOptional
default:
// either, someOptional is nil, or someOptional is non-nil but someValue does not equal the unwrapped contents of someOptional
}
ถ้าฉันเพียงแค่เขียนมันตรงเช่นนี้คอมไพเลอร์บ่นว่าsomeOptional
ไม่ยังไม่ได้เปิด แต่ถ้าผมอย่างชัดเจนแกะได้โดยการเพิ่ม!
ไปที่ปลายผมของหลักสูตรได้รับข้อผิดพลาด runtime เวลาใด ๆ ที่มีsomeOptional
nil
การเพิ่ม?
แทนที่จะเป็นสิ่งที่!
สมเหตุสมผลสำหรับฉัน (ในแง่ของการผูกมัดทางเลือกฉันคิดว่า) แต่ไม่ได้ทำให้ข้อผิดพลาดของคอมไพเลอร์หายไป (เช่นไม่ได้แกะตัวเลือก)