Swift 入門 | 関数 | inout 引数

Swift の関数について、もう 1 つ覚えておきたい機能が inout 引数である。これは渡された引数自体を変更できる特別な引数である。引数の前に inout を付ける。

(inout 引数名:)

inout 引数に変数を渡すときは、変数名の前に & を付ける。リテラルは変更できないため、渡すことはできない。

次に inout 引数の例を示す。

func tax(inout price:Int, rate:Double = 0.08) -> Void {
    price = Int(Double(price) * (1.0 + rate))
}

var num = 12300
tax(&num)

関数は次のように定義されている。

tax(inout price:Int, rate:Double = 0.08)

最初の引数 priceinout 引数である。戻り値の型は Void である。関数の呼び出しは次のようになる。

tax(&num)

これにより、変数 num の値が直接変更される。関数は値を返すのが基本だが、inout 引数を使うと変数に格納された値自体を直接変更できる。