如何在数组的每个元素上调用带有`inout`参数的函数?

时间:2016-12-01 21:26:07

标签: swift swift3

我有一个带inout参数

的函数
 func modify(word: inout Word)

我需要在数组的每个元素上调用它。这是我做的事情

for word in words {
    modify(word: &word)
}

但我得到错误:

  

不能将不可变值作为inout参数传递:' word'是一个“让...”恒定

我尝试迭代map words.map{ modify(word:&$0) },仍然是同样的错误:

  

不能像inout参数那样传递不可变值:' 0 $'是不可改变的

有没有办法在数组的每个元素上调用带有inout参数的函数?

1 个答案:

答案 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])
}