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

全部博文(20)

文章存档

2011年(1)

2010年(14)

2009年(4)

2008年(1)

我的朋友

分类:

2010-07-28 15:34:54

> 第3章 リストと配列
  第3章 リストと配列



3-1. リストと配列とは

  • リストとは、スカラーに順番をつけて並べたもので、そのリストの中でのスカラーの位置によって自由にアクセスすることができます。そして、このリストを変数にしたものを、配列といいます。
  • 配列の名前は、@ (アットマーク) + 英字1文字から始まり、それ以降は数字、英字およびアンダースコア ( _ ) を用いることができます。また大文字と小文字が区別されますので、たとえば @a@A は別物として扱われます。

    変数名に使用できる文字
    @abc123  変数名として使用可能。
    @123abc × 数字で始まることはできない。
    @abc_123  アンダースコアは使用可能。
    @abc-123 × ハイフンは使用することはできない。




3-2. 配列演算子
  • 配列には、数値や文字列を代入することができます。

    構文例 意味
    @x = (1, 2, 3); @x に 1, 2, 3 をこの順序で代入 (数値)
    @y = ("apple", "orange"); @y に apple と orange をこの順序で代入 (文字列)
    @z = ($a, $b, $c); @z に $a, $b, $c をこの順序で代入 (変数)


  • 変数で構成されたリストに対して、リスト値を代入することができます。

    構文例 意味
    ($x, $y, $z) = (1, 2, 3); $x, $y, $z にそれぞれ 1, 2, 3 を代入
    ($a, $b) = ("banana", "melon"); $a に banana を、$b に melon を代入
    ($a, $b) = ($b, $a); $a と $b の値を入れ換え


  • 配列の中の各要素は、$配列名 [ 添え字 ] という形式で表すことができます。

    配列の添え字は 0 から始まります。したがって、配列の1番目から3番目の要素にアクセスするには、0 から 2 までを添え字として使用することになります。
    以下の表の場合、パターン1とパターン2は、まったく同じ意味になります。

    パターン1 @fruit = ("apple", "orange", "banana");
    パターン2 $fruit[0] = "apple";
    $fruit[1] = "orange";
    $fruit[2] = "banana";


    配列の各要素には、添え字を指定することで、以下のようにしてアクセスすることができます。

    @fruit = ("apple", "orange", "banana");
    print "$fruit[1]
    \n";

    <出力結果>
    orange


  • 配列末尾の要素の添え字は、$#変数名 という変数で表すことができます。

    @fruit = ("apple", "orange", "banana");
    $num = $#fruit + 1;
    print "
    この配列の要素は$num個あります。\n";

    <出力結果>
    この配列の要素は3個あります。


  • 配列の個数は、左辺のスカラー変数に代入することができます。

    @fruit = ("apple", "orange", "banana");
    $num = @fruit;
    print "
    この配列の要素は$num個あります。\n";

    <出力結果>
    この配列の要素は3個あります。


  • また、以下のようにして、配列に代入し要素を追加することができます。

    @fruit = ("apple", "orange", "banana");
    @fruit = (@fruit, "grape");
    print "@fruit
    \n";

    <出力結果>
    apple orange banana grape




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

    関数 意味
    push 配列の末尾へ要素を追加
    pop 配列の末尾の要素を削除
    unshift 配列の先頭へ要素を追加
    shift 配列の先頭の要素を削除
    reverse 配列の順序を逆順にする
    sort 配列の順序をソートする


  • push

    配列の末尾へ要素を追加します。

    @char = ("A", "B", "C");
    push(@char, "D");
    print "@char
    \n";

    <出力結果>
    A B C D


  • pop

    配列の末尾の要素を削除します。

    @char = ("A", "B", "C");
    pop(@char);
    print "@char
    \n";

    <出力結果>
    A B


  • unshift

    配列の先頭へ要素を追加します。

    @char = ("A", "B", "C");
    unshift(@char, "D");
    print "@char
    \n";

    <出力結果>
    D A B C


  • shift

    配列の先頭の要素を削除します。

    @char = ("A", "B", "C");
    shift(@char);
    print "@char
    \n";

    <出力結果>
    B C


  • reverse

    配列の順序を逆順にします。

    @char = ("A", "B", "C");
    @char = reverse(@char);
    print "@char
    \n";

    <出力結果>
    C B A


  • sort

    文字列、数値および昇順、降順によって4パターンのソートが存在します。

    (1) 文字列としてソート(昇順)

    @char = ("C", "A", "D", "B");
    @char = sort(@char);
    print "@char
    \n";

    <出力結果>
    A B C D


    (2) 文字列として逆ソート(降順)

    @char = ("C", "A", "D", "B");
    @char = sort { $b cmp $a } (@char);
    print "@char
    \n";

    <出力結果>
    D C B A


    (3) 数値としてソート(昇順)

    @char = (3, 1, 4, 2);
    @char = sort { $a <=> $b } (@char);
    print "@char
    \n";

    <出力結果>
    1 2 3 4


    (4) 数値として逆ソート(降順)

    @char = (3, 1, 4, 2);
    @char = sort { $b <=> $a } (@char);
    print "@char
    \n";

    <出力結果>
    4 3 2 1

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