Apa Arti Dua Tanda Tanya pada Swift?

Operator nil-coalescing diwakili oleh dua tanda tanya di Swift. Ini adalah salah satu operator yang paling saya rindukan ketika bekerja di Objective-C. Operator nil-coalescing tidak unik untuk Swift. Banyak bahasa memiliki operator penggabungan nihil. Beberapa bahasa menggunakan istilah operator penggabungan nol. Mari saya tunjukkan cara kerja operator nil-coalescing.

 

Taking a Shortcut

Operator nil-coalescing tidak ajaib. Ini tidak lebih dari operator kenyamanan. Lihatlah contoh ini. Kami mendefinisikan konstanta, author, bertipe String?

Sejujurnya saya sangat menyukai opsional, tetapi terkadang dapat mengarah ke kode verbose. Lihatlah sisa contoh. Kami membuat fungsi Buku, meneruskan nilai penulis.

Ini adalah Swift yang valid, tetapi menurut saya ini bukan solusi yang paling elegan. Kita dapat meningkatkan implementasi secara drastis dengan menggunakan operator kondisional ternary. Ingat bahwa operator ternary adalah versi singkat dari pernyataan if-else.

Ini jauh lebih baik. Kami mengurangi enam baris menjadi satu baris. Meskipun ini merupakan peningkatan, saya tidak suka implementasinya karena kami memeriksa secara manual apakah author berisi nilai dan, jika memiliki nilai, kami menggunakan tanda seru untuk membuka nilai secara paksa. Itu adalah bendera merah dalam buku saya.

Di sinilah operator nil-coalescing berperan. Lihatlah contoh yang diperbarui di mana operator kondisional ternary diganti dengan operator nil-coalescing.

Operator nil-coalescing adalah binary operator, yang berarti beroperasi pada dua operan. Ekspresi sebelum operator nil-coalescing selalu bertipe opsional. Dalam contoh ini, penulis bertipe String?.

Nilai yang dikembalikan oleh ekspresi sebelum dan sesudah operator nil-coalescing harus cocok. Nilai yang disimpan di dalam penulis bertipe String. Kami menggunakan string literal, yang bertipe String. Jenisnya cocok dengan jenis nilai yang disimpan di dalam author.

Hal yang terbaik tentang operator nil-coalescing adalah ia dengan aman membuka nilai author jika memiliki nilai. Jika author tidak memiliki nilai, literal string dikembalikan. Ini adalah Swift yang terbaik. Benar?