場合で私がNULL可能Boolean b
を持っている場合は、私はJavaで次の比較を行うことができます。Kotlinでブール値の使用?表現
Boolean b = ...;
if (b != null && b) {
/* Do something */
} else {
/* Do something else */
}
、私は!!
オペレータ使用して同じことを達成することができます。しかし
val b: Boolean? = ...
if (b != null && b!!) {
/* Do something */
} else {
/* Do something else */
}
を!!
の使用は、ヌル安全システムを回避して、私には少し不慣れだと感じます。
これはもっと優雅なアプローチですか?
編集私が少しoversimplicatedようです。ローカル変数の場合、Bantharが示すように、動作します。しかし、私のブールb
は、実際には "バッキングフィールドを持つプロパティ"です(私は実際にこれが課すものは何もスピードアップしていません)。これが結果です:
単純に 'b'ではなく' b'ですか? – Maroun
@MarounMaroun 'b'は' null'で、Kotlinの機能の1つは[Null Safety]です(http://kotlinlang.org/docs/reference/null- safety.html#the - 演算子)、null可能な参照を評価しようとするとコンパイルエラーが発生します。したがって、普通の 'b'を使用するとコンパイルエラーが発生します:) – nhaarman
しかし、' b!= nil'は右側をチェックする前にそれをキャッチしませんか? – Maroun