gpt4 book ai didi

ios - 遍历数组并在 Swift 中增加计数器

转载 作者:搜寻专家 更新时间:2023-11-01 05:53:40 26 4
gpt4 key购买 nike

所以我试图遍历一个数组并根据数组中的索引增加两个计数器。该数组中有 bool 值,计数器用于所述 bool 值。我的实现充满了错误,所以我想弄清楚是我的逻辑不正确还是我的实现不正确。所以多一双眼睛会有所帮助

var numTrue = 0
var numFalse = 0
var boolArray = [true, true, false, true]

for index in boolArray.enumerate() {
if index == false{
numFalse++
} else {
numTrue++
}
}

print("Count true: \(numTrue)")
print("Count false: \(numFalse)")

最佳答案

Unheilig写道 enumarate 正在返回一个 sequenceType。

您还可以删除 enumerate 调用,我认为这会使您的代码更具可读性,如下所示:

var numTrue = 0
var numFalse = 0
var boolArray = [true, true, false, true]

for index in boolArray {
if index == false{
numFalse++
} else {
numTrue++
}
}

print("Count true: \(numTrue)")
print("Count false: \(numFalse)")

编辑 1:快速帮助文档

下次如果您有类似的问题或错误弹出,您也可以使用快速帮助文档,方法是按住 alt 键并将鼠标悬停在该方法上,然后出现一个问号,然后您可以单击该方法。将打开一个窗口,其中包含方法的描述,有时还有一个示例,如 enumerate() 的情况。请参见下面的屏幕截图:

enter image description here

编辑 2:改进的解决方案

Swift 提供了集合的方法,在你的例子中是一个数组,以减少代码量。在您的情况下,您可以使用 filter() 方法,该方法通过从调用它的数组中过滤掉元素来返回一个新数组。唯一的参数是一个返回 bool 值的闭包(阅读更多关于闭包的信息 here ),它将为数组中的每个元素执行一次这个闭包。Swift 自动为内联闭包提供速记参数名称,这些名称可用于通过名称 $0、$1、$2 等(来自文档)来引用闭包参数的值。

因此在您的情况下,$0 代表从索引 0 开始的每个元素。

count 返回数组中元素的数量,因此在您使用 filter 的情况下,它只返回 3,因为 true 出现了 3 次。 trueCounter = 3

对于 falseCounter,您可以轻松地从 boolArray.count 中减去 trueCounter 的结果,即 falseCounter = 4 - 3 -> 1

var boolArray = [true, true, false, true]

let trueCounter = boolArray.filter({$0 == true}).count
let falseCounter = boolArray.count - trueCounter

print("Count true: \(trueCounter)") // Count true: 3
print("Count false: \(falseCounter)") // Count false: 1

关于ios - 遍历数组并在 Swift 中增加计数器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35824274/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com