我有一个带inout
参数
func modify(word: inout Word)
我需要在数组的每个元素上调用它。这是我做的事情
for word in words {
modify(word: &word)
}
但我得到错误:
不能将不可变值作为inout参数传递:' word'是一个“让...”恒定
我尝试迭代map
words.map{ modify(word:&$0) }
,仍然是同样的错误:
不能像inout参数那样传递不可变值:' 0 $'是不可改变的
有没有办法在数组的每个元素上调用带有inout
参数的函数?
答案 0 :(得分:1)
使用for word in words
语法时,word
实际上是数组中元素的不可变副本。
要直接修改数组,请迭代索引:
for i in words.indices {
modify(word: &words[i])
}
相当于(对于数组至少)
for i in 0..<words.count {
modify(word: &words[i])
}