汇总 Swift 中的数组值时出错
Error summing up the array values in Swift
我是 Swift 的新手。在 Playground 中尝试此代码并出现错误(请参阅下面的描述)能否请您指出正确的方向 - 在哪里寻找解决方案?提前致谢。
func randomSet(num: Int, max: Int) -> Array<Double> {
var randArray = Array<Double>()
for index in 0...num {
randArray[index] = Double(arc4random_uniform(max+1))
}
ERROR: var sum = randArray.reduce(0) {[=11=] + }
for index in 0...num {
randArray[index] = randArray[index] / Double(sum) * Double(max)
}
return randArray
}
test = randomSet(10, 100)
在标有“ERROR”字样的行中,我得到:
执行被中断,原因:EXC_BAD_INSTRUCTION (code=EXC_I386_INVOP, subcode=0x0)
该错误实际上是由于尝试使用下标在 randArray
中附加值引起的。您应该改用 append
:
for _ in 0...num {
randArray.append(Double(arc4random_uniform(max+1)))
}
错误不是来自函数 reduce,而是在数组初始化时,您无法在初始化之前访问索引。下面的代码修复了这个错误。
for index in 0...num {
randArray.append(Double(arc4random_uniform(max+1)))
}
希望对你有帮助
我是 Swift 的新手。在 Playground 中尝试此代码并出现错误(请参阅下面的描述)能否请您指出正确的方向 - 在哪里寻找解决方案?提前致谢。
func randomSet(num: Int, max: Int) -> Array<Double> {
var randArray = Array<Double>()
for index in 0...num {
randArray[index] = Double(arc4random_uniform(max+1))
}
ERROR: var sum = randArray.reduce(0) {[=11=] + }
for index in 0...num {
randArray[index] = randArray[index] / Double(sum) * Double(max)
}
return randArray
}
test = randomSet(10, 100)
在标有“ERROR”字样的行中,我得到:
执行被中断,原因:EXC_BAD_INSTRUCTION (code=EXC_I386_INVOP, subcode=0x0)
该错误实际上是由于尝试使用下标在 randArray
中附加值引起的。您应该改用 append
:
for _ in 0...num {
randArray.append(Double(arc4random_uniform(max+1)))
}
错误不是来自函数 reduce,而是在数组初始化时,您无法在初始化之前访问索引。下面的代码修复了这个错误。
for index in 0...num {
randArray.append(Double(arc4random_uniform(max+1)))
}
希望对你有帮助