1. ホーム
  2. swift

[解決済み] inoutパラメータはいつ使うのか?

2023-08-17 09:12:52

質問

クラスやプリミティブ型を関数に渡した場合、関数内でパラメータに加えられた変更は、クラスの外部に反映されます。これは基本的に inout パラメータが行うことになっていることと基本的に同じです。

inoutパラメータの良い使用例とは?

どのように解決するのですか?

inout は、ローカル変数を変更すると、渡されたパラメータも変更されることを意味します。これがなければ、渡されたパラメータは同じ値のままである。を使うときに参照型を考えてみる。 inout を使っているときは参照型、使っていないときは値型を考えてみる。

例えば

import UIKit

var num1: Int = 1
var char1: Character = "a"

func changeNumber(var num: Int) {
    num = 2
    print(num) // 2
    print(num1) // 1
}
changeNumber(num1)

func changeChar(inout char: Character) {
    char = "b"
    print(char) // b
    print(char1) // b
}
changeChar(&char1)

良い使用例としては swap 関数で、渡されたパラメータを変更します。

Swift 3+ ノート : Swift 3で起動する が追加されました。 inout キーワードは の後に の後、型の前に来る必要があります。たとえば、Swift 3+では、現在 func changeChar(char: inout Character) .