Top/マニュアル/基本/配列
  トップページへ   [ 一覧 | 検索 | 最終更新 ]   [ 差分 | 履歴 | 凍結 ]

配列

配列は、変数の集まりみたいなものです。

ただの変数だと

_a = 1
 _b = 2
 _c = 3
 _d = 4
 _e = 5
 
 _sum = _a + _b + _c + _d + _e;

となりますが、配列だと

_a = (1,2,3,4,5);
 
 _sum = _a[0] + _a[1] + _a[2] + _a[3] + _a[4];

とかかけます。(0から始まっているので、最後が4なことにちょっと注意)

配列は繰り返しと組み合わせることで、真の威力を発揮します。
先ほどのように、_a[0], _a[1], _a[2], ・・・と書かずに、以下のようにもかけます。

_a = (1,2,3,4,5);
 
 _sum = 0;
 for _i = 0 ; _i < 5 ; i++
 {
   _sum += _a[_i];
 }

_a[0], _a[1], _a[2],・・・の代わりに、変数の _i を使っても、_aのそれぞれの値を取得できます。
_i の中身は for の中で、5未満の時、1 づつ足されていくので、順に_a[0], _a[1], _a[2]・・・と見ていくことになります。

もうちょっと例

上の例だと、あらかじめ配列の大きさが「5」であって、
そこで終わっていることがわかっていないと書けませんが、
以下のようにすることで、配列の大きさに関係なく、記述することができるようになります。

_a = (1,2,3,4,5);
 
 _sum = 0;
 for _i = 0 ; _i < ARRAYSIZE(_a) ; _i++
 {
   _sum += _a[_i];
 }

ARRAYSIZE()は、_aの配列の大きさを判定して、「5」を返します。
_aは配列であれば、大きさがなんであってもかまわないことになります。

配列には、文字も入ります。

_sweets = ("プリン", "チョコレート", "クレープ", "甘口いちごスパ")
 _talk= "";
 for _i = 0 ; _i < ARRAYSIZE(_sweets) ; _i++
 {
   _talk += _sweets[_i] + "に";
 }
 "\1\s[10]\0\s[0]" + _talk + "・・・今日は全部食べちゃうよ!\1なんかまざっとる!\e";

さらに一声

foreach楽です。_i = 0 も ARRAYSIZE() も _i++もいりません。
かわりに、_a[_i]に当たるもの(ここでは_var)を書けばOKです。

_a = (1,2,3,4,5);
 
 _sum = 0;
 foreach _a ; _var
 {
   _sum += _var;
 }

_varには、_aの中身が順に入ってきます。
配列の最後までいくと、自動的に終わります。