inout を使うことで、いわゆる参照渡しをすることができ、変数を加工することができる。
個人的にはあまり使いたくないので、ゆるーく説明しとく。
Swiftで引数を参照渡しする
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
func doubleNum (i1: inout Int, i2: inout Int) { i1 = i1 * 2 i2 = i2 * 2 } var x = 2 var y = 3 print(x) // 2 print(y) // 3 doubleNum(i1: &x, i2: &y) print(x) // 4 print(y) // 6 |
こんな感じで参照渡しをしているので、xとyが2倍されているのがわかる。
もう一度言うが、個人的に使うことはあまりないと思うので値渡しとの比較とかはしない。
メソッドを呼び出すときに変数に & をつけることに注意。