Kita tahu bahwa kita dapat menggunakan if let
pernyataan sebagai singkatan untuk memeriksa opsional nil kemudian membuka bungkusnya.
Namun, saya ingin menggabungkannya dengan ekspresi lain menggunakan operator AND logis &&
.
Jadi, misalnya, di sini saya melakukan rangkaian opsional untuk membuka bungkus dan secara opsional men-downcast rootViewController saya ke tabBarController. Tapi daripada membuat pernyataan if bersarang, saya ingin menggabungkannya.
if let tabBarController = window!.rootViewController as? UITabBarController {
if tabBarController.viewControllers.count > 0 {
println("do stuff")
}
}
Pemberian gabungan:
if let tabBarController = window!.rootViewController as? UITabBarController &&
tabBarController.viewControllers.count > 0 {
println("do stuff")
}
}
Di atas memberikan kesalahan kompilasi Penggunaan pengenal yang belum terselesaikan 'tabBarController'
Menyederhanakan:
if let tabBarController = window!.rootViewController as? UITabBarController && true {
println("do stuff")
}
Ini memberikan kesalahan kompilasi Nilai terikat dalam pengikatan bersyarat harus berjenis Opsional . Setelah mencoba berbagai variasi sintaksis, masing-masing memberikan kesalahan compiler yang berbeda. Saya belum menemukan kombinasi pemenang dari urutan dan tanda kurung.
Jadi, pertanyaannya adalah, apakah mungkin dan jika demikian apa sintaks yang benar?
Perhatikan bahwa saya ingin melakukan hal ini dengan if
pernyataan tidak sebuah switch
pernyataan atau ternary ?
operator.