如何将数组中的每个Int值乘以Swift中的常量?

说,我有一个数组[20, 2, 3]
如何在Swift中乘以此数组的每个Int值?
那么2 x数组变为[40, 4, 6] ,3 x数组变为[60, 6, 9]等等?

你可以使用.map()

 let values = [20, 2, 3] let doubles = values.map { $0 * 2 } let triples = values.map { $0 * 3 } 

如果要进行就地更新:

 var values = [20, 2, 3] values.enumerate().forEach { index, value in values[index] = value * 2 } // values is now [40, 4, 6] 

编辑:几年后回顾这个答案,我不认为这是运算符重载的特别好用 – [1, 2, 3] * 2评估并不是很明显[1, 2, 3] * 2 [2, 4, 6]而不是说[1, 2, 3, 1, 2, 3]


map肯定是一个很好的方法 – 虽然如果你想在你的问题“ 2 x array变成…… ”中得到你要求的语法,你可以重载*运算符。

如果数组的元素是可乘的且与标量相同的类型,这将允许您将数组乘以标量内联。

 extension Array where Element : Numeric { static func * (lhs: Array, rhs: Element) -> Array { // Map through the array elements, multiplying each by the rhs argument. return lhs.map { $0 * rhs } } static func *= (lhs: inout Array, rhs: Element) { // Use an `inout` argument in order to multiply an array in-place. lhs = lhs * rhs } } 

然后你可以像这样使用它:

 let yourArray = [2, 3, 4] var arr = yourArray * 4 // arr = [8, 12, 16] arr *= 3 // arr = [24, 36, 48] 

你可以使用for循环。

  var array = [20, 2, 3] let multiplier = 2 for i in 0...array.count - 1{ array[i] = array[i] * multiplier }