小池啓仁 ヒロヒト応援ブログ By はてな

小池啓仁(コイケヒロヒト)の動画など。

小池啓仁 ヒロヒト応援ブログ By はてな

リストと配列

Perlでは、リストと配列の概念が似ていてつい混同してしまいます。


リストとは、単にデータに順序を付けて並べたものです。
配列とは、その並べたデータを配列変数に格納したものです。


例えば、以下は、リストを配列変数に格納しています。

@aaa = (10, 20, 30);

つぎに、10をスカラー変数に格納するには、以下ようになります。

$aaa = (10, 20, 30)[0];

なんと、リストだと思っていたものが、配列として処理ができるのです。
これは、

$aaa = @aaa[0];

と全く同じです。

しかし、shift関数を使って10を求める時は、両者は異なるのです。

$aaa = shift(10, 20, 30);
$aaa = shift(@aaa);

前者はエラーになるのです。
どうしてもリストで処理をしたい場合には、

$aaa = shift @{[10, 20, 30]};

とします。
つまり、無名配列のリファレンスのデリファレンスをshiftするのです。
これは、厳密にはリストでなかったかもです。

ということで、リストと配列の違いわかりましたか?