Dalam artikel ini, anda akan belajar menggunakan pernyataan kawalan suis untuk mengawal aliran pelaksanaan program anda.
Pernyataan beralih juga merupakan pelbagai pernyataan kawalan Swift egif-lain, penjaga dll, yang melakukan tindakan yang berbeza berdasarkan keadaan yang berbeza.
Keindahan pernyataan suis adalah, ia dapat membandingkan nilai dengan beberapa kemungkinan corak pemadanan. Oleh itu, ia boleh digunakan sebagai pengganti if… else… if
tangga panjang sambil menyamai corak kompleks.
Sintaks pernyataan suis
Sintaks pernyataan suis adalah:
tukar pemboleh ubah / ungkapan (nilai kes1: // pernyataan nilai kes 2: // pernyataan lalai: // pernyataan)
Bagaimana Switch Statement di Swift berfungsi?
- Ungkapan suis dinilai sekali.
- Ia mengambil ungkapan dan membandingkan dengan setiap nilai kes dalam urutan (Atas -> Bawah).
- Sekiranya terdapat kecocokan, pernyataan di dalam casing akan dieksekusi dan seluruh pernyataan suis menyelesaikan pelaksanaannya sebaik sahaja kes suis pencocokan pertama selesai.
- Sekiranya tidak ada kesesuaian untuk kes ini, ia akan jatuh ke kes berikutnya.
- Kata kunci lalai menentukan kod yang akan dijalankan jika tidak ada padanan huruf besar.
Catatan : Bahagian setiap kes mesti mengandungi sekurang-kurangnya satu pernyataan yang dapat dilaksanakan.
Contoh 1: Program sederhana menggunakan Switch Statement
let dayOfWeek = 4 switch dayOfWeek ( case 1: print("Sunday") case 2: print("Monday") case 3: print("Tuesday") case 4: print("Wednesday") case 5: print("Thursday") case 6: print("Friday") case 7: print("Saturday") default: print("Invalid day") )
Apabila anda menjalankan program di atas, outputnya adalah:
Hari Rabu
Dalam program di atas, pernyataan beralih bermula dengan memadankan nilai dayOfWeek dengan kes 1 . Oleh kerana nilai dayOfWeek tidak sepadan dengan nilai kes pertama 1, ia jatuh ke kes berikutnya sehingga satu sepadan.
Oleh kerana kes 4 sepadan dengan ungkapan suis, pernyataan print("Wednesday")
di dalam kes itu dijalankan dan kes suis akan berakhir. Sekiranya tidak ada kes yang sesuai, penyataan di dalam lalai dilaksanakan.
Contoh 2: Tukar Pernyataan dengan kejayaan
Sekiranya anda menggunakan fallthrough
kata kunci di dalam pernyataan kes, kawalan diteruskan ke kes seterusnya walaupun nilai kes tidak sesuai dengan ungkapan beralih.
let dayOfWeek = 4 switch dayOfWeek ( case 1 : print("Sunday") case 2: print("Monday") case 3: print("Tuesday") case 4: print("Wednesday") fallthrough case 5: print("Thursday") case 6: print("Friday") case 7: print("Saturday") default: print("Invalid day") )
Apabila anda menjalankan program di atas, outputnya adalah:
Rabu Khamis
Dalam program di atas, kes 4 melaksanakan penyataan print("Wednesday")
dan fallthrough
kata kunci diteruskan ke kes5 . Penyataan print("Thursday")
di dalam kes 5 dijalankan walaupun kes itu tidak sesuai dengan ungkapan suis. Oleh itu, anda dapat melihat output pada hari Khamis di konsol.
Contoh 3: Tukar Pernyataan dengan corak yang lebih kompleks
let programmingLanguage = (name: "Go", version: 10) switch programmingLanguage ( case (let name,let version) where (version < 0 && name.count < 0) : print("Invalid input") case ("Swift",let version) where version == 4: print("Found latest version of Swift") case ("Swift" ,… <4 ): print("Found older version of swift)") case ("Swift" ,4… ) : print("Swift version greater than 4 is not released yet") case ("Taylor Swift",30) : print("OMG. This is Taylor swift") case (let name, let version): print(""" Programming Language:(name) Version: (version) Status: Not found """) )
Apabila anda menjalankan program di atas, outputnya adalah:
Bahasa Pengaturcaraan: Versi Go: 10 Status: Tidak dijumpai
Dalam program di atas, kami memadankan pengaturcaraan ekspresi Bahasa tuple jenis dengan kes yang berbeza seperti di bawah:
case (let name,let version) where (version < 0 && name.count < 0)
Kes ini mengikat nilai ekspresi beralih kepada pemalar sementara atau pemboleh ubah untuk digunakan dalam badan kes denganlet
kata kunci. Ini dikenali sebagai nilai mengikat.
Anda juga boleh menggunakan syarat untuk nilai tersebut denganwhere
klausa. Untuk beberapa keadaan di mana, anda boleh menggabungkannya menggunakan&&
operator seperti dalam contoh di atas.
Sekiranya kes tidak memenuhi syarat yang ditentukan di mana klausa, pernyataan di dalam blok kes tersebut tidak dilaksanakan dan jatuh untuk membandingkan kes suis seterusnya.case ("Swift" ,… <4 )
Kes ini memadankan elemen pertama tuple dengan literal string"Swift"
dan juga memeriksa apakah elemen kedua terletak di dalam julat satu sisi… <4
.case ("Swift" ,4… )
Kes ini memadankan elemen pertama tuple dengan literal string"Swift"
dan juga memeriksa apakah elemen kedua terletak di dalam julat satu sisi4…
.case (let name, let version)
Kes ini mengikat setiap nilai tupel kepada pemalar sementara atau pemboleh ubah.