はじめに
こんにちは@kaneko77です。
世の中には参照渡し、値渡しといった言葉がありますが、
参照渡しのinout
について共有していきたいと思います。
説明
まずは例題から...
ある二つの変数の中身を入れ変えたい時があったとします。
こんなふうに書くと思います。
func swap(hoge: Int, huga: Int){
var evacuation = hoge
hoge = huga
huga = evacuation
}
var hoge: Int = 1
var huga: Int = 2
print("hoge", hoge)
print("huga", huga)
swap(hoge: hoge, huga: huga)
print("hoge", hoge)
print("huga", huga)
しかし残念ながらこれだと型の引数は定数な為 コンパイルエラーとなってしまいます。
そんな時にinout
が必要になってきます。
inout
で定義した引数には呼び出す際に&
が必要になってきます。
func swap(hoge: inout Int, huga: inout Int){
var evacuation = hoge
hoge = huga
huga = evacuation
}
var hoge: Int = 1
var huga: Int = 2
print("hoge", hoge)
print("huga", huga)
swap(hoge: &hoge, huga: &huga)
print("hoge", hoge)
print("huga", huga)
ログ
hoge 1
huga 2
hoge 2
huga 1
上記で変数の値の入れ替えができるようになりました。
終わりに
今回はinout
についてでした。
本来だとスコープ外の変数には何も加えられないですがinout
使うことでできるようになりました。
使い方は気をつけた方が良いですね。
ここまで見ていいただきありがとうございました。