Kata kunci guard
luar biasa dan saya telah menggunakannya sejak Swift 2 diluncurkan. Saya berhasil menggunakannya dalam banyak skenario, termasuk yang ini:
for viewController in self.navigationController!.viewControllers {
guard let myCustomVC = viewController as? MyCustomViewController else {continue}
myCustomVC.doWhatItHasToDo()
break
}
Bekerja seperti pesona. Ulangi semua viewControllers
di navigationController
saat ini hingga menemukan yang saya inginkan.
Masalahnya adalah: sekarang saya perlu memperbarui kode di atas untuk menggunakan kembali variabel myCustomVC
di luar cakupan for..in
. Seharusnya sesederhana mendeklarasikan variabel sebelum cakupan, tetapi saya tidak dapat menemukan cara untuk guard
penugasan variabel tanpa kata kunci let
atau var
.
Kode hipotetis berikut menunjukkan apa yang ingin saya capai, namun Swift tidak mengizinkan saya melakukannya:
var myCustomVC: MyCustomViewController
for viewController in self.navigationController!.viewControllers {
guard myCustomVC = viewController as? MyCustomViewController else {continue}
myCustomVC.doWhatItHasToDo()
break
}
// Now myCustomVC is available outside the for...in scope
myCustomVC.doWhatever()
Xcode menyarankan penggunaan ==
daripada =
karena mengharapkan pernyataan guard
menjadi konteks boolean dan bukan penetapan variabel.
Adakah ide tentang cara mengatasi masalah ini?