在Swift中总结数组值时出错

时间:2015-02-04 18:41:08

标签: swift swift-playground

我是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)

2 个答案:

答案 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)))
  }

希望有所帮助