如何使用 Kotlin 检查数组中对象的布尔属性是否为 true?

zul*_*apa 0 arrays android kotlin

我正在尝试验证用 Kotlin 编写的 Android 应用程序中的数组。它是一个对象数组。这是总是返回 0 的代码。这可能是一些更深层次的问题,但现在我正在寻找任何其他方法来获得正确的计数。

private fun count(array: Array<Item>): Int {
    val selectedItemCount = 0
    array.forEach { item ->
        if (item.isSelected) selectedItemCount + 1
    }
    return selectedItemCount
}
Run Code Online (Sandbox Code Playgroud)

基本上我的问题是,如果计数为 0 并且没有选择任何项目,我想显示没有选择任何项目的消息,否则导航到下一个屏幕。我相信我做对了这部分。当我记录每次返回 0 的计数时,尽管所选项目在数组中为 true。

有什么帮助吗?

dey*_*dey 7

您可以通过仅使用 count with predicate 函数以更简洁的方式执行相同操作来改进代码(在本例中,该函数对所有isSelected设置为 的元素进行计数true):

private fun count(array: Array<Item>): Int {
    return array.count { it.isSelected }
}
Run Code Online (Sandbox Code Playgroud)

原问题有几个问题:

  • 在第一行中,您创建val(这是最终类型,因此您无法更改它的值)。你可以var使用
  • 此操作:selectedItemCount + 1加 1selectedItemCount并返回其值(不修改输入变量)。您可以使用selectedItemCount += 1运算符(添加并更新变量),或者只是selectedItemCount++想加一