Pernyataan penjaga cepat (Dengan Contoh)

Pada artikel ini, Anda akan belajar menggunakan pernyataan penjaga untuk mengontrol aliran eksekusi program Anda.

Pernyataan Swift If menjelaskan bagaimana Anda dapat melakukan tindakan berdasarkan kondisi tertentu (nilai boolean). Pada artikel ini, kita akan membahas manfaat pernyataan penjaga atas pernyataan if untuk mengontrol aliran program dan menulis kode yang lebih sederhana dan bersih.

Pernyataan Penjaga Cepat

Kegunaan utama dari pernyataan penjaga adalah untuk mentransfer kontrol program keluar dari ruang lingkup pada kondisi tertentu. Pernyataan ini mirip dengan pernyataan if yang mengeksekusi pernyataan berdasarkan kondisi tertentu (nilai boolean) tetapi tidak seperti if, pernyataan penjaga hanya berjalan ketika kondisi tertentu tidak terpenuhi.

Selain itu, pernyataan di dalam penjaga harus keluar dari ruang lingkup. Oleh karena itu, kita harus pernyataan kontrol program pengguna return, break, continueatau throwpada akhir pernyataan penjaga.

Syntax of Guard Statement

 ekspresi penjaga lain (// pernyataan // harus berisi pernyataan kontrol: return, break, lanjutkan atau lempar.) 
  • Di sini, ekspresi adalah ekspresi boolean (mengembalikan trueatau false).
  • Jika ekspresi dievaluasi false, pernyataan di dalam blok kode guarddieksekusi.
  • Jika ekspresi dievaluasi ke true, pernyataan di dalam blok kode guardakan dilewati dari eksekusi.

Bagaimana cara kerja pernyataan penjaga?

Catatan: Akhir pernyataan penjaga harus berisi pernyataan kontrol return, break, continueatau throw.

Contoh 1: Bagaimana cara kerja pernyataan penjaga?

Pernyataan penjaga sederhana yang valid adalah sebagai berikut:

 guard true else ( print("Condition not met") ) print("Condition met") 

Saat Anda menjalankan program, hasilnya adalah:

 Kondisi terpenuhi

Pada program di atas, guard berisi nilai boolean true (kondisi terpenuhi). Karena, guard statement hanya dijalankan jika kondisi tidak terpenuhi, maka statement di dalam guard tidak dijalankan. Itu sebabnya print("Condition met")dieksekusi dan keluaran Kondisi terpenuhi di layar.

Sekarang mari kita ubah kondisi menjadi false sebagai:

Contoh 2: pernyataan penjaga harus keluar dari ruang lingkup

 guard false else ( print("Condition not met") ) print("Condition met") 

Dalam program di atas, kondisi penjaga dievaluasi ke false. Jadi, pernyataan print("Condition not met")di dalam else harus dieksekusi. Tetapi Anda akan mendapatkan pesan kesalahan yang mengatakan tubuh 'penjaga' mungkin tidak jatuh, pertimbangkan untuk menggunakan 'kembali' atau 'lempar' untuk keluar dari ruang lingkup.

Pesan kesalahan dalam berarti kata sederhana, Anda perlu untuk mentransfer kontrol program dari pernyataan penjaga menggunakan return, break, continueatau throwpernyataan. Untuk saat ini kami akan menggunakan return. Dan karena returnpernyataan hanya dapat digunakan di dalam sebuah fungsi, kita akan membungkus kode di atas dalam Fungsi Swift.

Contoh 3: pernyataan penjaga di dalam suatu fungsi

Kita bisa menggunakan pernyataan penjaga di dalam fungsi di Swift sebagai:

 func someFunction() ( guard false else ( print("Condition not met") return ) print("Condition met") ) someFunction() print("Hello after function call") 

Ketika Anda menjalankan program di atas, hasilnya adalah:

 Kondisi tidak terpenuhi Hello setelah pemanggilan fungsi 

Dalam program di atas, kondisi penjaga dievaluasi false, oleh karena itu pernyataan di dalam penjaga dijalankan. print("Condition not met")Output pernyataan pertama Kondisi tidak terpenuhi di konsol.

Dan pernyataan tersebut returnmenghentikan eksekusi suatu fungsi dan pernyataan tersebut print("Hello, after function call")setelah pemanggilan fungsi dijalankan yang menghasilkan Hello after function call di konsol.

Contoh 4: Penjaga dengan opsional

Kita telah melihat di Swift Opsional penggunaan if-letuntuk membuka bungkusan opsional. Namun, kami juga dapat menggunakan pernyataan penjaga sebagai pengganti if-letuntuk membuka bungkus opsional dengan satu keuntungan. Keuntungan utama dari membuka bungkus opsional dengan pelindung daripada if-letadalah kita dapat meningkatkan cakupan variabel yang tidak dibungkus.

Mari kita lihat pada contoh di bawah ini:

 func changeOptionalStringToUpperCase() ( var name:String? guard let temp = name else ( print("Name is nil. Cannot process") return ) print("Uppercased:(temp.uppercased())") ) changeOptionalStringToUpperCase() 

Ketika Anda menjalankan program di atas, hasilnya adalah:

Namanya nihil. Tidak dapat memproses

Dalam program di atas, Anda dapat melihat nilai temp yang tidak terbungkus digunakan di luar cakupan yang ditentukan oleh pernyataan penjaga. Karena, nama didefinisikan sebagai opsional dan berisi nilai nil, pernyataan penjaga gagal untuk membuka bungkusan nilai.

Jadi, pernyataan di dalam guard else mengeksekusi yang mencetak Name is nil. Tidak dapat memproses dalam output dan mengakhiri fungsi dengan returnpernyataan. Kode yang setara dari pernyataan penjaga di atas jika-else adalah:

 func changeOptionalStringToUpperCase() ( var name:String? if let temp = name ( print("Uppercased:(temp.uppercased())") ) else ( print("Name is nil. Cannot process") return ) //how to access temp here?? Solution:Use Guard ) changeOptionalStringToUpperCase() 

Perhatikan dua pernyataan di atas sama-sama valid dan melakukan pekerjaan yang sama. Tetapi menggunakan pernyataan if-let Anda tidak dapat menggunakan nilai yang tidak terbungkus di luar pernyataan if-let. Tetapi dengan pernyataan penjaga Anda dapat menggunakan nilai yang tidak terbungkus di seluruh fungsi.

Contoh 5: Penjaga dengan banyak kondisi

Pernyataan penjaga juga dapat merangkai beberapa ketentuan yang dipisahkan oleh koma (,) sebagai:

 func changeOptionalStringToUpperCase() ( var name:String? = "" guard let temp = name , temp.count> 0 else ( print("Name is nil or an empty string. Cannot process") return ) print("Uppercased:(temp.uppercased())") ) changeOptionalStringToUpperCase()

Ketika Anda menjalankan program di atas, hasilnya adalah:

Nama tidak ada atau string kosong. Tidak dapat memproses

Dalam program di atas, pernyataan penjaga berisi dua kondisi yang dipisahkan oleh koma.

Kondisi pertama let temp = namemembuka bungkusan opsional yang kembali truedalam kasus kita dan kondisi kedua temp.count> 0memeriksa apakah string yang tidak dibungkus memiliki lebih dari 0 karakter yang dievaluasi falsedalam contoh kita.

Oleh karena itu, pernyataan di dalam pernyataan penjaga mengeksekusi pernyataan print("Name is nil or an empty string. Cannot process")yang menghasilkan Nama nihil atau string kosong. Tidak dapat memproses di konsol dan menghentikan fungsi dengan returnpernyataan.

Artikel yang menarik...