gpt4 book ai didi

arrays - 如何快速遍历数组

转载 作者:搜寻专家 更新时间:2023-10-30 21:48:30 26 4
gpt4 key购买 nike

我学得很快,但在遍历数组时遇到了问题。这是我正在尝试做的事情:

func orderStringByOccurence(stringArray: [String]) -> [String: Int]{
var stringDictionary: [String: Int] = [:]
for i in 0...stringArray.count {
if stringDictionary[stringArray[i]] == nil {
stringDictionary[stringArray[i]] = 1
stringDictionary
} else {
stringDictionary[stringArray[i]]! += 1
}
}
return stringDictionary
}

在尝试调用此函数之前,我不会收到错误消息。然后我得到这个错误:

EXC_BAD_INSTRUCTION (code=EXC_1386_INVOP, subcode=0x0)

我试过调试,发现当我尝试这个时我得到了同样的错误:

for i in 0...arrayFromString.count{
print(arrayFromString[i])
}

那么我该如何遍历这个数组呢?感谢您帮助创建一个新的

最佳答案

你需要改变

for i in 0...arrayFromString.count

for i in 0..<arrayFromString.count

就像现在一样,您遍历数组,然后遍历末尾。

您还可以使用不同风格的 for 循环,这可能会好一点:

func orderStringByOccurence(stringArray: [String]) -> [String: Int] {
var stringDictionary: [String: Int] = [:]
for string in stringArray {
if stringDictionary[string] == nil {
stringDictionary[string] = 1
} else {
stringDictionary[string]! += 1
}
}
return stringDictionary
}

另外,你可以稍微简化一下你的逻辑:

for string in stringArray {
stringDictionary[string] = stringDictionary[string] ?? 0 + 1
}

更新 - 为了完整起见,我想我也应该在这里添加一个 reduce 示例。请注意,从 Swift 5.1 开始,可以隐含单行函数中的 return 语句 ( SE-0255 )。

func orderStringByOccurence(stringArray: [String]) -> [String: Int] {
stringArray.reduce([:]) { result, string in result.merging([string: 1], uniquingKeysWith: +)}
}

关于arrays - 如何快速遍历数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33554278/

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