The description of in/out/inout/lazy leaves much to be desired. There's a thread on the mailing list titled "Passing arguments into functions - in, out, inout, const, and contracts" that has a number of people attempting to give more complete descriptions. It seems like parameters fall into two categories Type 1: fundamental types, structs, fixed size arrays Type 2: variable size arrays, objects in: Type 1 - Passed by value. changes to object have no external effect Type 2 - Passed by reference. function can't change the reference but can change the object out: Type 1 - Passed by reference, initialized by default initializer Type 2 - Passed by reference, initialized by default initializer inout: Type 1 - Passed by reference, can change the reference(?) Type 2 - Passed by reference, can change the reference To me, the clarification of "in" parameters need clarification. For type 2, I'd expect the equivalant of a C++ "const T&" but that isn't the case and should really be spelled out.
Fixed size arrays are also Type 2, passed by reference. int func(int[2] xy) { xy[0] = 1; } // modifies caller's xy[0]
Commit pushed to https://github.com/D-Programming-Language/d-programming-language.org https://github.com/D-Programming-Language/d-programming-language.org/commit/59e9decffc8f6fd3439492c406279ddf327b9b1b fix Issue 955 - Passing arguments into functions - in, out, inout, const, and contracts
AltStyle によって変換されたページ (->オリジナル) / アドレス: モード: デフォルト 音声ブラウザ ルビ付き 配色反転 文字拡大 モバイル