公開中のアプリ

[Swift入門#16]inoutキーワードを使ってみよう。

今回は関数の引数に使うinoutと言うキーワードの使い方を説明したいと思います!
引数ですが、関数の中では基本的に定数として扱われる為、値を変更する事ができません。
それを変更できるようにするのがinoutキーワードです!

早速、例を見てよう!

func salary(hour: Int) {
    hour = hour * 1250// ここでエラーになる
    print(hour)
}

今回の例は、アルバイトの給料計算をしてくれる簡単な関数を作ってみたいと思います。

上記コードは関数salaryの引数にhour(働いた時間)を入れて、処理の中で、「働いた時間」×「時給」して、引数hourに再代入してprint()をしています。

ただ冒頭で説明した通り、引数の値は変更できないので2行目でエラーが出てしまいます。
エラー内容は
Cannot assign to value: ‘hour’ is a ‘let’ constant
このように出ます。
これはhourは定数だから変更できませんって言うエラーです。

では変更できるようにコードを書き換えたいと思います。

inoutの使い方。

func salary(hour: inout Int) {
    hour = hour * 1250
    print(hour)
}
var h = 3
salary(hour: &h)// 結果 3750

print(h)// 結果 3750

1行目のように引数hourの部分にinoutと書けば引数を変更できるようになります。

関数salaryを呼び出して計算させてみたのが5行目、6行目です。
5行目で変数hを宣言して働いた時間を代入しています。
6行目で関数salaryを呼び出し、引数の値に先ほど宣言した変数hを使用しています。

ここで注意したいのが、6行目の&です。
inoutを使用して引数に値を渡す場合、このように&を付けます。

ちなみにですが、8行目で変数hをprint()で出力してみました。
結果は3750となっているのがわかると思います。
これは変数hを引数に渡して、関数salaryで計算した結果がまた変数hに戻されるのでこのような結果になります。

ちょっとこの辺りの処理の流れがややこしいですが、inoutは割と使う事になると思うので覚えておくと良いと思います!

ありがとうございました〜!

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

アプリ