Swiftで参照渡しと値渡しがわからなくなってきたため、自分で下記の様なsampleコードを考えてみました。
Swift
1import UIKit 2 3var x = 200 4 5func change (_a: inout Int) { 6 var a = 100 7} 8 9change(_a: &x) 10 11print(x) 12
inout引数
を設定することや、呼び出し側で実引数に&
を付加することで実行できると考えており、print(x)
の結果は100になることを期待したのですが、実際には200のままでした。
もちろん値渡しをしている以下のコードでも200のままです。
Swift
1import UIKit 2 3var x = 20 4 5func change (_a: Int) { 6 var a = 10 7} 8 9change(_a: x) 10 11print(x)
参照渡しをしているにも関わらず、変数の中の値が置き換わらない理由がわかる方がいらっしゃればご教示いいただければ嬉しいです。
よろしくお願い申し上げます。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/05/04 01:09
2020/05/04 01:18
2020/05/04 01:45
2020/05/04 02:47