【发布时间】:2015-11-14 08:26:36
【问题描述】:
我有一个字符串数组。例如,这个:
var stringArray1 = ["abcdef", "bcdefg", "cdefgh"]
我想改变数组并取出每个字符串的前 3 个字符。结果是这样的:
var newStringArray1 = ["def", "efg", "fgh"]
从 Apple 的文档中,我尝试了这个:
func mutateArray(x: [String]) -> [String] {
var newArray = [String]()
for i in x {
let range = i.startIndex.advancedBy(3)
i.removeRange(range)
newArray.append(i)
}
return newArray
}
但是这一行:
i.removeRange(range)
给了我一个错误:“不能在可变值上使用变异成员:“i”是一个“let”常量。”
我怎样才能改变这样的数组?我听说 map() 函数也可以,但是在搜索 map 函数时,我收到的大部分解释来自 swift 1/1.2,它在 swift 2 中发生了变化。
谢谢
【问题讨论】:
-
如果将i设置为var,程序会崩溃……i是数组中的索引,而不是里面的字符串!
-
oh i 不代表索引的内容,而是索引本身。这对于我为什么会收到错误是有道理的。谢谢。