Di Swift, bagaimana saya bisa menulis kasus dalam pernyataan switch yang menguji nilai yang dialihkan dengan konten opsional , melewati kasus jika opsional berisi nil?
Begini cara saya membayangkan ini mungkin terlihat:
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
}
Jika saya hanya menulisnya persis seperti ini, kompilator mengeluh bahwa someOptionaltidak terbungkus, tetapi jika saya secara eksplisit membukanya dengan menambahkan di !bagian akhir, saya tentu saja mendapatkan kesalahan runtime setiap saat someOptionalberisi nil. Menambahkan ?alih-alih !akan masuk akal bagi saya (dalam semangat rangkaian opsional, saya kira), tetapi tidak membuat kesalahan kompiler hilang (yaitu tidak benar-benar membuka bungkus opsional).