Kotlin 不推荐使用Int和Int类型参数的标识相等

Kotlin 不推荐使用Int和Int类型参数的标识相等,kotlin,kotlin-android-extensions,Kotlin,Kotlin Android Extensions,仅供参考,这是我关于StackOverflow的第一个问题,我对Kotlin很陌生 在处理一个完全是Kotlin(1.1.3-2版)的项目时,我看到以下代码中有一条警告(为好奇的小伙子们提供了注释): 警告是针对可见性和View.SYSTEM_UI_FLAG_FULLSCREEN==0,它表示不推荐使用Int和Int类型参数的标识相等 我应该如何更改代码,以及为什么它首先被弃用(看在知识的份上)?您可以使用以下方法更改代码: // use structual equal

仅供参考,这是我关于StackOverflow的第一个问题,我对Kotlin很陌生

在处理一个完全是Kotlin(1.1.3-2版)的项目时,我看到以下代码中有一条警告(为好奇的小伙子们提供了注释):

警告是针对可见性和View.SYSTEM_UI_FLAG_FULLSCREEN==0,它表示不推荐使用Int和Int类型参数的标识相等


我应该如何更改代码,以及为什么它首先被弃用(看在知识的份上)?

您可以使用以下方法更改代码:

//              use structual equality instead ---v
if (visibility and View.SYSTEM_UI_FLAG_FULLSCREEN == 0) {
    decorView.systemUiVisibility = flags
}
为什么不建议使用?你可以看到我的答案

另一方面,当您使用maybe return
false
时,例如:

val ranged = arrayListOf(127, 127)

println(ranged[0] === ranged[1]) // true
println(ranged[0] ==  ranged[1]) // true


对于基本类型,
==
(引用相等)与
=
等于
相等)相同。编译器将对这两种基本类型使用引用相等,因此惯用Kotlin对基本类型使用
=
。@EricCochran谢谢!这很简单。谢谢你的解释!因此,简而言之,我们不应该在这种情况下使用引用等式的原因是它可能不会产生我们期望的结果(如果它实际上是真的,则为假)?酷。我需要更多的阅读和练习。感谢您的帮助。:)
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