もし配列を_array2 = _array1といった感じに代入したとき、_array2は独自の配列ではなく、_array1を「参照」しているだけである。もし_array2を変更したなら、_array1も同時に変更される。他にも、_array1を関数の引数として使い、_array2を関数の中で変更しても同じように_array1に影響を及ぼす。
1 2 3 4 5 6 7 8 9 10 11 | _array1 = [1,2,3]; _array2 = _array1; _array2 set [2,0]; //_array1は[1,2,0] a = { private [ "_array2" ]; _array2 = _this; _array2 set [2,10]; }; _array1 call a; //_array1は[1,2,10]になった |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | _array1 = [1,2,3]; _array2 = [] + _array1; //_array2は[1,2,3] _array2 set [2,0]; //_array1は[1,2,3]、_array2は[1,2,0] _array2 = _array1 + []; //_array2は[1,2,3] _array2 set [2,10]; //_array1は[1,2,3]のまま、_array2は[1,2,10] _array2 = _array1 - []; //_array2は[1,2,3] _array2 set [2,20]; //_array1は[1,2,3]のまま、_array2は[1,2,20] _array2 = +_array1; //_array2は[1,2,3] _array2 set [2,30]; //_array1は[1,2,3]のまま、_array2は[1,2,30] |
1 2 3 | _array = [[1,2,3],[4,5,6],[7,8,[9,10]]]; ((_array select 2) select 2) set [0,10]; //_arrayは[[1,2,3],[4,5,6],[7,8,[10,10]]] |
1 2 3 4 5 6 7 8 | _array = [ "John" , "Paul" , "George" , "Ringo" , "John" , "Paul" , "George" , "Ringo" ]; _lastGeorgeIndex = -1; { if (_x == "George" ) then { _lastGeorgeIndex = _forEachIndex; }; } forEach _array; //_lastGeorgeIndexは6 |
1 2 3 4 | private [ "_colours" , "_randomColour" ]; _colours = [ "green" , "yellow" , "purple" , "white" ]; _randomColour = _colours select (floor (random (count _colours))); //スマートだろ? |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | private [ "_array" , "_temp" , "_sanitised" ]; _array = toArray "<<<killzone_kid>>>" ; _temp = []; { switch _x do { case 60 : { _temp = _temp + toArray "<" ; }; case 62 : { _temp = _temp + toArray ">" ; }; default { _temp = _temp + [_x]; }; }; } forEach _array; _sanitised = toString _temp; //_sanitisedは<<<Killzone_Kid>>> |
Enjoy,
KK
その4へ
KK's blog – ArmA Scripting Tutorials: Arrays (Part 3) by Killzone Kid
Translated by POLPOX
Translated by POLPOX
0 件のコメント :
コメントを投稿
注: コメントを投稿できるのは、このブログのメンバーだけです。