汇总 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)))
  }

希望对你有帮助