<連想配列ならびにハッシュテーブル>
>>ハッシュとは何者か
Perlにおけるハッシュとは、「キー」と「値」を一組にして保持する、内部順序を(少なくとも外見には)持たないデータ構造のこと。
>>あの、もうちょっと具体的に
たとえば、ハッシュ"和英辞典"があったとして、このハッシュに「物理学」と呼びかけると「physics」と答えてくれる。
この時、「物理学」がキーであり、「physics」が値となる。
>>で、なにがいいの?
すぐに思い付くのは、「存在確認の容易さ」。
Perlの場合、ハッシュに対して働く関数がいくつか用意されている。
その中にあるハッシュが与えられたキーを持つか否かを判定するものがある。
例えば、前述の和英辞典君に対して、「不可能」という項目があるかどうかを聞いてくれるわけだ。
載ってなければそれは欠陥辞書であるとして、相応の処理をする。
もし尋ねる相手が単なる配列だったら大変だ。自前でループを用意して、先頭から順繰りに比較していくしかない
(ただしperlの場合内部的には同じことをやっているはず)。
順序構造を放棄する利点はここにある。
>>注意
同じキーが複数あってはいけない。
ハッシュはキーで値を探すので、複数のキーがあると何を返してよいか判らなくなる。
もし既にあるキーと同じキーを後から付け加えようとした場合、上書きされる。
>>使用例
本格的に使ったことが無いので、ひとまず手抜きな奴を。
%aster;
$aster{'sun'} = 'star';
%aster = ('mercury','planet', 'venus', 'planet');
%aster = ('earth'=>'planet',
'moon'=>'satellite');
print "$aster{'moon'}\n"; #"satellite"と表示される
exists $aster{sun}; #trueを返す
exists $aster{mars}; #falseを返す
accend->Perl->labnote->index page