Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在Kotlin中获取布尔数组中的真计数_Java_Kotlin - Fatal编程技术网

Java 如何在Kotlin中获取布尔数组中的真计数

Java 如何在Kotlin中获取布尔数组中的真计数,java,kotlin,Java,Kotlin,我已经阅读了kotlin文档并尝试了BooleanArray.count(谓词:(Boolean)->Boolean),但它仍然返回数组的大小,而不是true的数目: val checks = arrayOf(true, false, true, true, true) val trueCount = checks.count { true } 我的代码出了什么问题?您正在传入一个谓词,该谓词在此处始终返回true: val-trueCount=checks.count{true} 这将返

我已经阅读了kotlin文档并尝试了
BooleanArray.count(谓词:(Boolean)->Boolean)
,但它仍然返回
数组的大小,而不是
true的数目:

val checks = arrayOf(true, false, true, true, true)

val trueCount = checks.count { true }

我的代码出了什么问题?

您正在传入一个谓词,该谓词在此处始终返回true:

val-trueCount=checks.count{true}
这将返回数组的大小。我希望您的代码是:

val-trueCount=checks.count{it}
换句话说,项的计数“对于名为
it
的项,表达式
it
返回true”

您可能会发现另一种更易于阅读的方法,即显式检查平等性:

val trueCount=checks.count{it==true}

就我个人而言,我倾向于避免与布尔文字进行比较,但我可以看出,在这种情况下,它至少可以说更清晰。

您在这里传递的谓词总是返回true:

val-trueCount=checks.count{true}
这将返回数组的大小。我希望您的代码是:

val-trueCount=checks.count{it}
换句话说,项的计数“对于名为
it
的项,表达式
it
返回true”

您可能会发现另一种更易于阅读的方法,即显式检查平等性:

val trueCount=checks.count{it==true}
就我个人而言,我倾向于避免与布尔文字进行比较,但我可以看出,在这种情况下,它至少可以说更清晰。

使用
count{it}
而不是
count{true}
count
的参数不是数组中要查找的值;它是一个谓词:一个接受一个参数并返回
true
false
的函数。对数组中的每个项调用一次谓词,该谓词返回的值(
true
false
)确定是否对该项进行计数。因此,结果是数组中谓词计算为
true
的项数

在此上下文中,编写
{true}
{value->true}
的简写,是一个常量函数。无论
值是多少,它都将始终返回
true
。因此,“计算
{true}
返回
true
的项目数”与“计算项目数”完全相同

相反,您需要计算值为
true
的项数。您应该使用的谓词是
{value->value}
,它是一个接受单个参数并返回该参数值的函数。由于单个lambda参数在您不给它命名时被隐式命名为
it
,因此
{value->value}
的缩写就是
{it}

使用
count{it}
而不是
count{true}
count
的参数不是数组中要查找的值;它是一个谓词:一个接受一个参数并返回
true
false
的函数。对数组中的每个项调用一次谓词,该谓词返回的值(
true
false
)确定是否对该项进行计数。因此,结果是数组中谓词计算为
true
的项数

在此上下文中,编写
{true}
{value->true}
的简写,是一个常量函数。无论
值是多少,它都将始终返回
true
。因此,“计算
{true}
返回
true
的项目数”与“计算项目数”完全相同


相反,您需要计算值为
true
的项数。您应该使用的谓词是
{value->value}
,它是一个接受单个参数并返回该参数值的函数。由于<强>单个LAMBDA参数隐式地命名为<代码>它当您不给它命名时,<代码> {Value> Value} /Case>的缩写只是<代码> {it }。

可以帮助考虑<代码>校验。计数{i==truth} /代码>:这显然是您想要的,但是与更简洁的
checks.count{it}
@gidds:Yup具有相同的效果,它将把它添加为option.Ta。虽然我并不是在建议人们使用它-只是它可以帮助解释较短的版本,如果它的操作并不明显。它可能有助于考虑<代码>校验。计数{i==true}/<代码>:这清楚地计算了你想要的,但是与更简洁的<代码>检查有相同的效果。{{it }< /c>。将添加该选项作为option.Ta。虽然我并不是建议人们使用它,只是说如果它的操作不明显,它可能有助于解释较短的版本。