入出力パラメータ


inout


SWIFTでは、関数のパラメータはConstantなので、基本的には変更できません.ただし、関数でパラメータの値を変更したい場合は、パラメータのData Typeの前にinoutキーを付けることができます.

call by reference


inoutパラメータは次のとおりです.
  • 関数が呼び出されると、パラメータとして入力された値がコピーされます.
  • 値は
  • 関数で変更されます.
  • 関数が返されると、変更された値が既存の変数値に割り当てられます.
  • このプロシージャは、呼び出された関数外および関数内でパラメータのアドレス値を参照する構造を実行します.したがって、inoutパラメータを使用する関数にパラメータを追加する場合は、cのアンペアsand(&)演算子と同様にタグが付けられます.

    に注意


    正式なドキュメントでは、inoutパラメータでは、関数を関数の範囲外にする方法(関数の別の方法で関数の役割を関数の範囲外にする方法)について説明します.うっかりするとSWIFTのメモリ安定性に反します.
    var global = "Global Variable"
    
    func function(_ param: inout String) {
        param += global
    }
    
    function(&global)
    // error: Execution was interrupted, reason: signal SIGABRT.
    
    グローバル変数をinoutパラメータとして渡し、関数でグローバル変数を同時に使用すると、読み取りと書き込みが同時に実行され、実行時にエラーが発生します.
    したがって,inoutパラメータとして渡される変数には関数内でアクセスできない.