Kotlin三項条件演算子

1。概要

簡単に言えば、Kotlinには三項演算子はありません。ただし、ifおよびwhen式を使用するこのギャップを埋めるのに役立ちます。

このチュートリアルでは、三項演算子を模倣するいくつかの異なる方法を検討します。

2.式の場合場合

他の言語とは異なり、場合するときKotlinでは表現されています。このような式の結果は、変数に割り当てることができます

この事実を使用して、ifwhenの両方を独自の方法で三項演算子の代わりに使用できます。

2.1。if-elseの使用

if式を使用して三項演算子を模倣する方法を見てみましょう。

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

上記の式で、atrueに設定されている場合結果変数はyesに設定されます。それ以外の場合は、noに設定されます。

結果のタイプは右側の式に依存することに注意しください。通常、タイプはAnyです。たとえば、右側にブール型がある場合、結果もブールになります。

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

2.2。いつ使用するか

when式を使用して疑似三項演算子を作成することもできます。

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

コードはシンプルでわかりやすく、読みやすいです。atrueの場合結果yesに割り当てます。それ以外の場合は、noに割り当てます。

2.3。エルビス演算子

場合によっては、if式を使用してnullでない場合は値を抽出したり、nullの場合はデフォルトの値を返したりします

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

when式で同じことを行うことも可能です。

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

これは非常に一般的なパターンであるため、Kotlinには特別な演算子があります。

val result = a ?: "Default"

:?エルビス演算子として知られています。nullでない場合は、オペランドを返します。それ以外の場合は、?:演算子の右側に指定されたデフォルト値を返します

2.4。DSL

三項演算子を模倣したDSLを作成したいという誘惑は確かにあります。ただし、Kotlinの言語制限は厳しすぎて、従来の3項構文を100%再現することはできません。

そのため、この誘惑を避けて、前述のソリューションの1つを使用してみましょう。

3.結論

- Kotlinは三項演算子を持っていませんが、私たちが使用することができ、いくつかの選択肢がある場合するときは。以前に見たように、これらは構文糖衣ではなく、完全な表現です。

いつものように、コードはGitHubで入手できます。