Pengendali Bersyarat Kotlin Ternary

1. Gambaran keseluruhan

Secara ringkas, tidak ada operator ternary di Kotlin . Walau bagaimanapun, menggunakan ungkapan if dan when membantu mengisi jurang ini.

Dalam tutorial ini, kita akan melihat beberapa cara berbeza untuk meniru pengendali ternary.

2. jika dan bila Ungkapan

Tidak seperti bahasa lain, jika dan ketika di Kotlin adalah ungkapan. Hasil ungkapan seperti itu dapat diberikan kepada pemboleh ubah .

Dengan menggunakan fakta ini, jika dan bila boleh diganti dengan pengendali ternary dengan cara mereka sendiri.

2.1. Menggunakan if-other

Mari kita lihat menggunakan ungkapan if untuk meniru operator ternary:

val result = if (a) "yes" else "no"

Dalam ungkapan di atas, jika a ditetapkan ke benar , pemboleh ubah hasil kami ditetapkan ke ya . Jika tidak, ia ditetapkan ke tidak .

Perlu diperhatikan bahawa jenis hasilnya bergantung pada ungkapan di sebelah kanan . Secara umum, jenisnya adalah Apa-apa . Contohnya, jika sebelah kanan mempunyai jenis Boolean , hasilnya juga Boolean :

val result: Boolean = if (a == b) true else false

2.2. Menggunakan bila

Kita juga dapat menggunakan ungkapan ketika untuk membuat operator pseudo-ternary:

val result = when(a) {   true -> "yes"   false -> "no" }

Kodnya ringkas, mudah dan senang dibaca. Jika yang adalah benar , menyerahkan keputusan untuk menjadi ya . Jika tidak, tetapkan ke no .

2.3. Pengendali Elvis

Kadang-kadang, kita menggunakan ungkapan if untuk mengekstrak beberapa nilai ketika tidak kosong atau mengembalikan nilai lalai ketika nol :

val a: String? = null val result = if (a != null) a else "Default"

Anda juga boleh melakukan perkara yang sama dengan ungkapan ketika :

val result = when(a) { null -> "Default" else -> a }

Oleh kerana ini adalah corak biasa, Kotlin mempunyai pengendali khas untuknya:

val result = a ?: "Default"

The ?: Dikenali sebagai pengendali Elvis. Ia mengembalikan operan jika tidak batal . Jika tidak, ia akan mengembalikan nilai lalai yang ditentukan di sebelah kanan operator ?: .

2.4. DSL

Sudah tentu ada godaan untuk membuat DSL yang meniru pengendali ternary. Tetapi, larangan bahasa Kotlin terlalu ketat untuk memungkinkan pembiakan 100% sintaks ternary tradisional.

Oleh itu, mari kita hindari godaan ini dan gunakan salah satu penyelesaian yang disebutkan sebelumnya.

3. Kesimpulannya

Walaupun Kotlin tidak mempunyai operator ternary, ada beberapa alternatif yang dapat kita gunakan - jika dan kapan . Mereka bukan gula sintaksis, tetapi ungkapan lengkap, seperti yang telah kita lihat sebelumnya.

Seperti biasa, kodnya tersedia di GitHub.