Juste pour info, c'est ma première question sur StackOverflow et je suis vraiment nouveau dans Kotlin.
En travaillant sur un projet entièrement Kotlin (ver 1.1.3-2), je vois un avertissement sur le code suivant (avec les commentaires pour vous les gars curieux):
// 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
}
}
L'avertissement est pour visibilité et View.SYSTEM_UI_FLAG_FULLSCREEN ===, et il dit l'égalité d'identité pour les arguments de types Int et Int est déconseillée.
Comment devrais-je changer le code et pourquoi a-t-il été déprécié en premier lieu (pour la connaissance)?
Vous pouvez changer le code en utilisant égalité structurelle à la place comme ci-dessous:
// use structual equality instead ---v
if (visibility and View.SYSTEM_UI_FLAG_FULLSCREEN == 0) {
decorView.systemUiVisibility = flags
}
Pourquoi ne pas suggérer d'utiliser égalité référentielle ? vous pouvez voir ma réponse ici .
En revanche, lorsque vous utilisez égalité référentielle/identité peut renvoyer false
, par exemple:
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