我有一个名为arr的数组,类型为[Int8]:
var arr: [Int8] = []
在整个程序中,我使用append和insert将项添加到数组中。但是,当我尝试使用arr.removeIndexAt(x)删除项时,它会抛出错误:
Playground execution failed: <EXPR>:144:13: error: immutable value of type '[Int8]'
only has mutating members named 'removeAtIndex'
arr.removeAtIndex(x)
为什么会这样?我尝试在操场上重新创建它:
var arr: [Int8] = []
arr.append(1)
arr.removeAtIndex(0)
它工作正常。有人可以向我解释我如何解决这个问题或以其他方式删除项目?任何帮助都会很棒。谢谢:))
答案 0 :(得分:1)
找到解决方案。将mutating
添加到removeExtraZeros()
的定义中,以允许它更改属性,即
mutating func removeExtraZeros() { ... }
不幸的是,您遇到了while
循环后for
循环无限循环的问题,因此请考虑修改该部分。
答案 1 :(得分:1)
您说当您尝试使用arr.removeIndexAt(x)
删除项目时,会抛出错误。
因为方法名称是removeAtIndex:
,而不是removeIndexAt: