在 Swift 中总结数组值时出错
Posted
技术标签:
【中文标题】在 Swift 中总结数组值时出错【英文标题】:Error summing up the array values in Swift 【发布时间】:2015-02-04 18:41:08 【问题描述】:我是 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 (code=EXC_I386_INVOP, subcode=0x0)
【问题讨论】:
请edit您的帖子标题更能描述问题。 我怎样才能纠正这个问题? 当它出现在未来用户的搜索结果中时,它绝对没有意义。您的标题应描述问题或包含具有一定相关性的描述性问题。谢谢。 请注意,0...num
包括 范围结束,因此将为您提供一个包含 num+1
元素的数组。您可能想改为0 ..< num
。
【参考方案1】:
该错误实际上是由于尝试使用下标在randArray
中附加值引起的。你应该改用append
:
for _ in 0...num
randArray.append(Double(arc4random_uniform(max+1)))
【讨论】:
【参考方案2】:这个错误不是来自函数reduce,而是在你的数组初始化时,你不能在初始化之前访问索引。下面的代码修复了这个错误。
for index in 0...num
randArray.append(Double(arc4random_uniform(max+1)))
希望对你有帮助
【讨论】:
谢谢你,Hamza,这让我们更清楚了!换句话说,我必须先用一些值填充我的数组,然后才能使用索引。明白了。以上是关于在 Swift 中总结数组值时出错的主要内容,如果未能解决你的问题,请参考以下文章
concurrentPerform UnsafeMutablePointer.deinitialize 向数组添加值时出错