HOME > 関数引数の参照渡し
関数引数の参照渡し Inout
Swiftで参照だけを渡す(呼び出し元の変数の値を変更する)にはどうしたらよいのかな〜と調査していると、関数引数に参照渡しする方法で inoutという言葉があることを知りました。紹介いたします。
参考:in-outパラメータに関して
参考:「値、参照」の「値渡し、参照渡し」の違いについて Swift でお勉強してみる
参考:Swift/iOS: How to use inout parameters in functions with AnyObject/Any or Pointers
やってみた
testIntを関数内で+1する場合影響受ける関数とそうでない関数を比較しています。
import UIKit
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
var testInt = 0;
println(testInt);//結果ー>0
sanshouWatashi_NO(testInt);
println(testInt);//結果ー>0
sanshouWatashi_YES(&testInt);
println(testInt);//結果ー>1
}
//参照渡しではない通常(呼び出し元影響受けない)
func sanshouWatashi_NO(var param1:Int){
param1 += 1;
}
//参照渡し(呼び出し元影響受ける)
func sanshouWatashi_YES(inout param1:Int){
param1 += 1;
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}
}
inoutなんて知らなかったです。ただinoutっていう言葉は直感的でわかりやすい。
まとめ
昔プログラムを覚えたてのころ、この参照渡しって概念がなんともスッと理解できなかったことを思い出しました。。。
↓こんな記事もありますよ!
![]() | ArraySwiftではArrayとNSArray両方利用することができます。記事を統合しました。 |
![]() | アプリを常にActiveにForegroundにした状態で写真を撮影できるか写真は音をたてないと撮影できなかったり不便なことが多いのでできるのかよくわかりませんので検証 |
![]() | UITextViewやらで縦書きができないか検証「文字の縦書き」をやってみたいのですが、どうもUITextView等には設定が無いとのことです。 調べていると、本当にない?のかな。少し調査して作れそうなもんであればつくってみれたら、、、との気持ちで進めてみます。 |
Tweet
![]() |
|||
|