繁体   English   中英

在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) {$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)

该错误实际上是由于尝试使用下标将值附加到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)))
  }

希望能有所帮助

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM