↑クリックして拡大
↑クリックして拡大
↑クリックして拡大
↑クリックして拡大

頭痛が減ったので共有です!

rebuild.fmを応援しています!

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っていう言葉は直感的でわかりやすい。

まとめ

昔プログラムを覚えたてのころ、この参照渡しって概念がなんともスッと理解できなかったことを思い出しました。。。

↓こんな記事もありますよ!


2021-05-14 14:21:41

WatchOSのwatchconnectivityのFiletransferの落とし穴。と、避け方。

AppleWatch 実機だと成功するんだけど、シュミレーターだと失敗するという、、、 昔作成してた時は成功してたのになーと思って調べると、どうやら昔は成功してたみたい。watchOS6以降は...

2021-05-06 14:04:37

LINEのアニメーションスタンプ制作の落とし穴、、、失敗談

ゴールデンウィークにLINEスタンプを作成してみました。 作り切って申請も通したんですが、意図したアニメーションと違う、、、、 LINEクリエーターの画面だと、アニメーションのプレビュー...

2021-05-01 18:05:35

久しぶりのAdmobをobjective-cに実装。コンパイルエラーだらけ。バーミッション不具合でエミュレータにインスコできない。

忘れないようにメモ エミュレータにアプリをインストールする際にパーミッション系のエラーがでた時、また、iphone実機にインストールする際にも権限系のエラーが出る場合。 ターゲット→ex...
このエントリーをはてなブックマークに追加
右側のFacebookのLikeをクリック頂けると記事更新の際に通知されますので宜しければご利用下さい!