配列を代入すると値がコピーされる言語はいくつか存在する
てゆうか配列の入った変数を他の変数に代入すると値がコピーされるのもワロスなポイント
PHPの配列はCの構造体みたいな扱いなんだろうか?
いずれにしてもそんな仕様のメジャーな言語は見たことが無い
Adaの場合、配列のAssignmentは値のコピーとなる。C言語と違い配列のポインタ(AdaのAccess)と配列が明確に区別されるため、混乱が生じにくい。
with Ada.Text_IO; use Ada.Text_IO;
procedure Array_Test is
type Sample_Array_Type is array (1 .. 3) of Integer;
From_Array : Sample_Array_Type;
To_Array : Sample_Array_Type;
begin
From_Array := (1, 2, 3);
To_Array := From_Array;
From_Array := (others => 0);
for I in Sample_Array_Type'Range loop
Put_Line(Integer'Image(From_Array(I)));
end loop;
for I in Sample_Array_Type'Range loop
Put_Line(Integer'Image(To_Array(I)));
end loop;
end Array_Test;
% ./array_test 0 0 0 1 2 3
Fortranなども配列を=
で代入すると値がコピーされようだ。