[Swift] 呼び出し元の変数を変更する関数を書く方法

Posted on

通常、関数に値を渡すと値渡しになるため、呼び出し元の変数に変更は反映されないのですが、 型にinoutを付け、参照渡しにすることで呼び出し元に反映させることが出来ます。



通常

var a = 1
var b = 2

// 普通に呼び出した場合(通常、値渡しなので、結果が呼び出し側の変数に影響しない)
func add(left:Int, right:Int) -> Int {
    return a+b
}

add(left:1,right:2) // 3
print(a) // 1 変更されない



呼び出し元の変数を変更したい場合

var a = 1
var b = 2

// 参照渡しで結果を呼び出し側の変数に反映させる
func add(org:inout Int, added:Int){
    org = org + added
}

// 呼び出す際にinoutの引数に対しては&が必要
add(org: &a, added: b)
print(a) // 3 変更される