プログラミング基礎 I

第九回 (2005年 6月 20日): データの関連付け: ハッシュ

http://www.sw.it.aoyama.ac.jp/2005/Programming%20Basics%20I/lecture10.html

AGU

© 2005 Martin J. Dürst 青山学院大学

先先週の演習・宿題

配列の特性

ハッシュ (連想配列)

ハッシュの例: 月の番号と名前

番号から名前を引く (配列使用):

$months[1] = "January";
...

名前から番号を引く (ハッシュ使用):

$months{'January'} = 1;
...

ハッシュの書き方

ハッシュ全体: %hash
(% はハッシュの「冠詞」でかる)

ハッシュの一個の要素: $hash{'key'}
(「単数」(スカラ) なので「冠詞」は $ に変更)
(ハッシュの「番地」はキー (鍵) と言う)

$months$months[$n]$months{$m} は別物

$months@months%months は別物

ハッシュとリスト

リストをハッシュに変換する (例えば代入する) 時に、リストはキーと値の繰り返しと見なされる:

%months = ('January', 1, 'February', 2, 'March', 3, ...);

関連をもっとわかりやすくするには => を使える:

%months = ('January' => 1, 'February' => 2, 'March' => 3, ...);

裸のワード (bareword) が使える:

%months = (January => 1, February => 2, March => 3, ...);

ハッシュ全体の処理

基本的な方法: foreach を使う:

ハッシュの要素の存在

存在のチェック:
if (defined $hash{"key"}) { ... }

完全な取消:
delete $hash{'key'};

値を無定義にするだけ:
undef $hash{'key'};

二重ハッシュ等

ハッシュと配列の要素の参照は二重以上使える:

注意: 同じ変数名を使うには限界がある (例: $m[1]{xxx}$m[1][5] は同時には使えない)

演習