我是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) {$0 + $1}
for index in 0...num {
randArray[index] = randArray[index] / Double(sum) * Double(max)
}
return randArray
}
test = randomSet(10, 100)
在标有ERROR字样的行上,我明白了:
执行被中断,原因:EXC_BAD_INSTRUCTION(代码= EXC_I386_INVOP,子代码= 0x0)
答案 0 :(得分:1)
错误实际上是由于尝试使用下标在randArray
中附加值而引起的。您应该使用append
代替:
for _ in 0...num {
randArray.append(Double(arc4random_uniform(max+1)))
}
答案 1 :(得分:1)
错误不是来自函数reduce,但是在初始化数组时,您无法在初始化之前访问索引。下面的代码修复了这个错误。
for index in 0...num {
randArray.append(Double(arc4random_uniform(max+1)))
}
希望有所帮助