Swift membutuhkan pernyataan switch yang lengkap, dan setiap case memiliki kode yang dapat dieksekusi.
Label 'case' dalam 'switch' harus memiliki setidaknya satu pernyataan yang dapat dieksekusi
Adakah yang sudah memutuskan cara yang baik untuk menangani kasus-kasus di mana Anda sebenarnya tidak ingin melakukan apa-apa? Saya bisa meletakkan println () di sana, tapi itu terasa kotor.
Jawaban:
Menurut buku itu , Anda perlu menggunakannya di
break
sana:sumber
break
menunjukkan bahwa cabang tanpabreak
mungkin jatuh.()
wajan sederhana juga. Namun demikian saya lebih sukabreak
karena membuat segalanya lebih jelas. Gunakan kata kuncifallthroug
untuk melewati pernyataan.default:
kasus ini. Sepertinya itu bukan hal yang baik. Saya juga setuju bahwa itu menunjukkan perilaku c's fall through, yang bukan apa yang dilakukan Swift (senang mengetahui itu bisa gagal).Anda dapat menggunakan
break
pernyataan:let vegetable = "red pepper" var vegetableComment: String = "Nothing" switch vegetable { case "cucumber", "watercress": break // does nothing case let x where x.hasSuffix("pepper"): vegetableComment = "Is it a spicy \(x)?" default: vegetableComment = "Everything tastes good in soup." }
Contoh dimodifikasi dari dokumen
sumber
Di bawah ini adalah salah satu opsi untuk pernyataan null, tetapi mungkin bukan solusi yang baik. Saya tidak dapat menemukan pernyataan seperti python pass
untuk sakelar, istirahat adalah pilihan yang lebih baik.
break
sumber
Selain
break
disebutkan dalam jawaban lain, saya juga melihat()
pernyataan tidak boleh digunakan:switch 0 == 1 { case true: break case false: () }
Gunakan
()
jika Anda merasabreak
bingung atau ingin menyimpan 3 karakter.sumber
Solusi terbersih yang saya temukan adalah dengan menyertakan pernyataan terakhir Anda dalam kasus sakelar sebagai default Anda. Ini menghindari kebutuhan untuk menambahkan
break
atau pernyataan tidak perlu lainnya sambil tetap mencakup semua kemungkinan kasus.Sebagai contoh:
switch myVar { case 0: myOtherVar = "Red" case 1: myOtherVar = "Blue" default: myOtherVar = "Green" }
sumber
Jangan lakukan apa pun dalam pernyataan kasus peralihan yang lengkap:
Cepat:
switch yourVariable { case .someCase: break }
SwiftUI:
switch yourVariable { case .someCase: EmptyView() // break does not work with ViewBuilder }
Menggunakan EmptyView () sebagai ganti putus dalam tampilan SwiftUI mencegah kesalahan:
EmptyView () adalah tampilan standar SwiftUI (diuji dengan Xcode 12, iOS 14) dan tidak perlu ditentukan sendiri.
sumber
Anda dapat memeriksa kasus tertentu, tidak perlu
exhustive
denganswitch
case
sKatakanlah Anda memiliki enum seperti ini,
enum Selection { case one case two case three } var myCase = Selection.one
Anda dapat memeriksa seperti ini,
if case .one = myCase { print("one") }
sumber