正直、これはStackOverflowに関する私の最初の質問であり、私はKotlinで本当に新しいです。
完全にKotlin(バージョン1.1.3-2)であるプロジェクトで作業しているときに、次のコードに関する警告が表示されます(好奇心旺盛な若者向けのコメント付き)。
// Code below is to handle presses of Volume up or Volume down.
// Without this, after pressing volume buttons, the navigation bar will
// show up and won't hide
val decorView = window.decorView
decorView
.setOnSystemUiVisibilityChangeListener { visibility ->
if (visibility and View.SYSTEM_UI_FLAG_FULLSCREEN === 0) {
decorView.systemUiVisibility = flags
}
}
警告はvisibility and View.SYSTEM_UI_FLAG_FULLSCREEN ===に対するものであり、タイプIntおよびIntの引数のIDの等価性は非推奨ですと表示されます。
コードをどのように変更する必要がありますか。なぜそれが最初から廃止されたのですか(知識のため)。
以下のように、代わりに structual equality を使用してコードを変更できます。
// use structual equality instead ---v
if (visibility and View.SYSTEM_UI_FLAG_FULLSCREEN == 0) {
decorView.systemUiVisibility = flags
}
referential equality の使用を推奨しないのはなぜですか?あなたは私の答えを見ることができます ここ 。
一方、 referential/identity equality を使用すると、false
が返される可能性があります。次に例を示します。
val ranged = arrayListOf(127, 127)
println(ranged[0] === ranged[1]) // true
println(ranged[0] == ranged[1]) // true
val exclusive = arrayListOf(128, 128)
// v--- print `false` here
println(exclusive[0] === exclusive[1]) // false
println(exclusive[0] == exclusive[1]) // true