LoginSignup
0
1

More than 1 year has passed since last update.

swiftのinoutについて(変数の中身の入れ替え方法)

Posted at

はじめに

こんにちは@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使うことでできるようになりました。
使い方は気をつけた方が良いですね。
ここまで見ていいただきありがとうございました。

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1