Swift3 在for each循环的迭代器中修改值

Swift3 在for each循环的迭代器中修改值,swift3,Swift3,我目前开始学习Swift 3,我已经有了其他编程语言的经验,并问我是否可以修改for each循环的迭代器中的值,而不是for in!。让我们来看看下面的例子: var numbers = [45000.0, 50000.0, 60000.0] for i in 0..<numbers.count { numbers[i] = numbers[i] + (numbers[i] * 0.1) } 它不会编译。是否有可能用其他任何方式来修改数字的值,这在我看来就像是C++中的

我目前开始学习Swift 3,我已经有了其他编程语言的经验,并问我是否可以修改for each循环的迭代器中的值,而不是for in!。让我们来看看下面的例子:

var numbers = [45000.0, 50000.0, 60000.0]

for i in 0..<numbers.count {
    numbers[i] = numbers[i] + (numbers[i] * 0.1)   
}
它不会编译。是否有可能用其他任何方式来修改数字的值,这在我看来就像是C++中的迭代器?
谢谢你的回答

不可能使用您的示例,因为数组是值类型,索引变量编号是常量。要使数字可变,您必须复制它,使数组中的原始项保持不变

折衷方法是枚举函数

var numbers = [45000.0, 50000.0, 60000.0]

for (i, number) in numbers.enumerated() {
    numbers[i] = number + (number * 0.1)
}

但是,Sulthan建议的解决方案更可取。

您仍然在考虑旧的编程语言。现代方法是使用辅助函数一步完成所有工作,而不使用手动迭代:

let numbers = [45000.0, 50000.0, 60000.0]
let newNumbers = numbers.map { $0 + $0 * 0.1 }

注意,我们生成了一个新数组,而不是更改现有数组。常量不可变的使用帮助我们避免了许多常见的编程错误。

在这里使用map会更好更快。因为循环是老派的,哈哈,我知道,但我想逐字逐句地回答这个问题。好吧,很公平:
let numbers = [45000.0, 50000.0, 60000.0]
let newNumbers = numbers.map { $0 + $0 * 0.1 }