swift言語:In-Out parameters
概要
関数の引数は値コピーのため、値の変更は関数内でのみ反映されます。 もし、引数の値を変更したい場合には、引数の変数宣言の前に、inoutキーワードを追加する必要があります。 参考渡しになり関数から戻っても値の変更が保持されます。
// inoutパラメータを使った関数定義 func swapTwoInts(inout a: Int, inout _ b: Int) { let temporaryA = a a = b b = temporaryA } var someInt = 3 var anotherInt = 107 swapTwoInts(&someInt, &anotherInt) print("someInt is now \(someInt), and anotherInt is now \(anotherInt)") // prints "someInt is now 107, and anotherInt is now 3"
Tupleを使った多値返値でも同じ事が実現できます。
var someInt = 3 var anotherInt = 107 func swapTwoIntsT(a: Int, b: Int) -> (a: Int, b: Int) { return (b,a) } print(swapTwoIntsT(someInt, b: anotherInt))