Swift転職なら=>【LevTech】
↑クリックして拡大
↑クリックして拡大
↑クリックして拡大
↑クリックして拡大

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

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

まとめ

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

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

大阪都構想の橋下さんの鼻に誠意をもって顔認識処理で画鋲を刺す

先日大阪都構想でニュースがざわついておりましたが、 そこで自分が思っていたこと、なぜ鼻ピンしたのかを顔認識サンプルと誠意を込めて書き記してまいります。(※選挙ポスターに画鋲を刺す事や、そもそも「他人様」の画像を変更することがタブーな事を理解しつつの投稿です。問題がないかの問い合わせメールを送る予定です。画像はWikipediaからの引用です)

NSFileManagerでAPP保存領域のデータ操作

ファイルやディレクトリ作成はなんとなく面倒くさいイメージがありましたが、この記事で少し自分の中で壁が低くなった気がします。 よろしければご利用くださいませ。

UITextViewやらで縦書きができないか検証

「文字の縦書き」をやってみたいのですが、どうもUITextView等には設定が無いとのことです。 調べていると、本当にない?のかな。少し調査して作れそうなもんであればつくってみれたら、、、との気持ちで進めてみます。
このエントリーをはてなブックマークに追加
右側のFacebookのLikeをクリック頂けると記事更新の際に通知されますので宜しければご利用下さい!