Chinaunix首页 | 论坛 | 博客
  • 博客访问: 100582
  • 博文数量: 20
  • 博客积分: 1400
  • 博客等级: 上尉
  • 技术积分: 455
  • 用 户 组: 普通用户
  • 注册时间: 2007-06-06 11:04
文章分类

全部博文(20)

文章存档

2011年(1)

2010年(14)

2009年(4)

2008年(1)

我的朋友

分类:

2010-07-28 15:35:23

> 第4章 ハッシュ変数
  第4章 ハッシュ変数



4-1. ハッシュ変数とは

  • ハッシュとは、連想配列とも呼ばれ、「キー」と「値」を1組のペアとして関連付けされた配列です。ただし、配列自体は順序付けされていないところに特徴があります。
  • ハッシュの変数のことを、ハッシュ変数といい、% (パーセント) + 英字1文字から始まり、それ以降は数字、英字およびアンダースコア ( _ ) を用いることができます。また大文字と小文字が区別されますので、たとえば %a%A は別物として扱われます。




4-2. ハッシュ変数の操作
  • ハッシュ変数は、キーと値をペアにして、数値や文字列を代入します。

    構文例 意味
    %fruit = ("red", "apple", "yellow", "banana"); %fruit に red と apple 及び yellow と banana という文字列をそれぞれのペアで代入


    また、このように定義したハッシュは読みづらいことがあるので、Perl5に限ってコンマの代わりに、=> (等号、大なり) という区切り記号が用意されています。これを使うことで、キーと値の違いを明確にあらわすことができます。

    パターン1 %fruit = ("red", "apple", "yellow", "banana");
    パターン2 %fruit = (
          "red" => "apple",
          "yellow" => "banana",
    );


  • ハッシュ変数の中の各要素(各ペア)は、$ハッシュ変数名 { キー } という形式で、それに対応する「値」を参照することができます。

    以下の表の場合、パターン1とパターン2は、まったく同じ意味になります。

    パターン1 %fruit = ("red", "apple", "yellow", "banana", "purple", "grape");
    パターン2 $fruit{"red"} = "apple";
    $fruit{"yellow"} = "banana";
    $fruit{"purple"} = "grape";


    ハッシュ変数の各要素には、「キー」を指定することで「値」にアクセスすることができます。

    %fruit = ("red", "apple", "yellow", "banana", "purple", "grape");
    print "$fruit{'red'}
    \n";

    <出力結果>
    apple




4-3. ハッシュ関数
  • ハッシュを操作するための関数として、次のような関数が用意されています。

    関数 意味
    keys すべてのキーを取り出す
    values すべての値を取り出す
    each 1組のキーと値を取り出す
    delete 特定の要素を取り除く


  • keys

    すべてのキーを取り出します。取り出された配列の順序は一定でないことに注意します。これはハッシュが順序付けられた配列でないためです。

    %fruit = ("red", "apple", "yellow", "banana", "purple", "grape");
    @file = keys (%fruit);
    print "@file
    \n";

    <出力結果>
    purple yellow red


  • values

    すべての値を取り出します。keys関数同様、取り出された配列の順序は一定ではありません。

    %fruit = ("red", "apple", "yellow", "banana", "purple", "grape");
    @file = values (%fruit);
    print "@file
    \n";

    <出力結果>
    grape banana apple


  • each

    1組のキーと値を取り出します。

    %fruit = ("red", "apple", "yellow", "banana", "purple", "grape");
    ($key, $val) = each (%fruit);
    print "
    キー $key$val\n";

    <出力結果>
    キー purple 値 grape


    しかしながら、上記の場合、どのペアが取り出されるかが不定であり、しかも1組だけが抽出されるので、通常 each関数の場合は次のようにwhile構文と併用した形で使用されます。

    %fruit = ("red", "apple", "yellow", "banana", "purple", "grape");
    while ( ($key, $val) = each (%fruit) ) {
           print "
    キー $key$val\n";
    }


    <出力結果>
    キー purple 値 grape
    キー yellow 値 banana
    キー red 値 apple


  • delete

    特定の要素を取り除きます。変数によるキーを指定することで、そのキーと値のペアをハッシュから削除します。

    %fruit = ("red", "apple", "yellow", "banana", "purple", "grape");
    delete $fruit{"yellow"};

    while (($key, $val) = each (%fruit)) {
           print "
    キー $key$val\n";
    }


    <出力結果>
    キー purple 値 grape
    キー red 値 apple

阅读(468) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~