2016-05-15 8 views

答えて

10

あなたは.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

あなたはforループを使用することができます。

var array = [20, 2, 3] 
    let multiplier = 2 

    for i in 0...array.count - 1{ 
     array[i] = array[i] * multiplier 
    } 
4

map間違いなく行くには良い方法です - あなたはあなたの質問「×2列になる...」のために尋ねた構文を取得したい場合も、あなたは*演算子をオーバーロードできます。

これにより、配列の要素がスカラと同じ型で乗算可能である場合、配列にスカラ型のインラインで乗算することができます。

let yourArray = [2, 3, 4] 

var arr = yourArray * 4 // arr = [8, 12, 16] 

arr *= 3 // arr = [24, 36, 48] 
:あなたはこのようにそれを使用することができます

protocol Multipliable { 
    func *(lhs:Self, rhs:Self) -> Self 
} 

// add any additional types that you want to be multipliable here 
extension Int:Multipliable {} 
extension Double:Multipliable {} 
extension Float:Multipliable {} 

// map through the array elements, multiplying each by the rhs argument 
func *<T:Multipliable>(lhs:[T], rhs:T) -> [T] { 
    return lhs.map {$0 * rhs} 
} 

// use an inout argument in order to multiply an array in-place 
func *=<T:Multipliable>(inout lhs:[T], rhs:T) { 
    lhs = lhs*rhs 
}