2011年4月6日水曜日

ハッシュを定義する

ハッシュとは、配列と同じように任意の個数の値を格納するデータ構造の一つです。ただし、配列とは違って、格納する個々の値を指定するのに、数値 (index) の代わりに名前を使います。この名前をキーと言います。

name [1] = “Hanako”

indexである “1” の値に名前を使う事ができます。
下記のように表すことができます。

$name{“ Yamada “} = “Hanako”

“Yamada” がキー、”Hanako” が値になります。

配列はindexがユニークな値になっています。ハッシュでも、キーはユニークな値しか認められません。


ハッシュの要素にアクセス
要素にアクセスする場合は以下のように書きます。

$hash{$some_key}

具体例として、
$name{“Yamada”} = “Hanako”;
$name{“Suzuki”} = “Taro”;
$name{“Shindo”} = “Taichi”;


ハッシュの全体にアクセス
ハッシュ全体を表すには、”%”を使います。

%name = (“Yamada”, “Hanako”, “Suzuki”, “Taro”, “Shindo”, “Taichi” };

■ハッシュをほどく
Perlは、検索が速くできるような順番で、キーと値のペアを格納するため、リストに戻したさいに、元のリストとお同じ順番で並ぶとは限りません。

#!usr/bin/perl
%some_hash = ("Yamada", "Hanako", "Suzuki", "Taro", "Shindo", "Taichi");
@any_array = %some_hash;
print "@any_array\n";

実行してみる

$ perl 5_2_1
Yamada Hanako Shindo Taichi Suzuki Taro


■ => を使ってキー/値を定義する
人間にとって、どれがキーで、どれが値かを分かりやすくするために、”=>” を使います。

%name = (“Yamada” => “Hanako”, “Suzuki” => “Taro”, “Shindo” => “Taichi” };


関数を使う
ハッシュ全体を扱う関数がいくつかあります。

■keys ・ values
keys : ハッシュに含まれる全てのキーから成るリストを返します。
values : ハッシュに含まれる全ての値から成るリストを返します。

サンプルとしては下記の通りです。

%name = ("Yamada", "Hanako", "Suzuki", "Taro", "Shindo", "Taichi");

my @key = keys %name;
my @value = values %name;

print "\%nameのキー:@key\n";
print "\%nameの値:@value\n";

実行すると、下記が出力されます。
%nameのキー:Yamada Shindo Suzuki
%nameの値:Hanako Taichi Taro


■each
each : 評価するたびに、次のキー/値のペアを返します。繰り返しに利用されます。

サンプルとしては下記の通りです。

%name = ("Yamada", "Hanako", "Suzuki", "Taro", "Shindo", "Taichi");

while( ($key, $value) = each %name ) {
print "$key => $value\n";
}

実行すると下記が出力されます。
Yamada => Hanako
Shindo => Taichi
Suzuki => Taro

0 件のコメント:

コメントを投稿