データがどんどんと増えていくと、ひとつずつデータを管理するのが難しくなってきます。例えば、前のページで作った List というクラスのインスタンス list1 は list2 と名前を付けています。この調子で行けば、データを追加するたびに別の名前のインスタンスを作っていかなければなりません。
ここで登場するのが、配列です。新しい配列を作るには、いくつかあります。ここでは2つの方法を紹介します。
ちなみに配列と言うのは、要素の集合をまとめて管理するもので、次のようなイメージで考えてください。
配列:["要素0","要素1","要素2","要素3"]
class List #ここの説明は前のページを見てください attr_accessor :plot, :species, :abundance def initialize(plot="new_plot", species="new_species", abundance=0) @plot = plot @species = species @abundance = abundance end end list1 = List.new("MT001","Zoysia japonica",0.5) list2 = List.new("MT001","Miscanthus sinensis",0.3) list3 = List.new("MT001","Aeginetia indica",0.01) list4 = List.new("MT002","Imperata cylindrica",0.3) array1 = [list1,list2,list3,list4] #array1という配列を作り、右辺の内容を代入 array2 = Array.new #array2という配列を作る array2.push(list1) #array2にlist1を追加 array2.push(list2) # list2を追加 array2.push(list3) # list3を追加 array2.push(list4) # list4を追加 array1.each{ |list| #array1の要素それぞれを list に代入 puts list.plot #plotを呼び出すメソッド puts list.species #speciesを呼び出すメソッド puts list.abundance #abundanceを呼び出すメソッド } #繰り返しここまで array2.each{ |list| #list は「|」で囲まれている puts list.plot #説明は上と同じです puts list.species puts list.abundance }
array1 = [list1,list2,list3,list4] では [ ] で囲まれた部分を配列にして左辺の array2 に代入しています。
array2 = Array.new というのは、見覚えのある書き方です。List クラスのインスタンス(オブジェクト)を作るときに出ていています。これと同じで、配列と言うのは Array クラスのオブジェクトになります。そのオブジェクト array2 というのが作られます。中身は空っぽです。その次の array2.push(list1) で初めてarray2 に list1 が配列の要素として追加されます。以下同じです。
array1.each{ |list|
ではarray1 の一番初めの要素である list1 を each により取り出しています。取り出した要素は | | で囲んだ list という変数に代入されます。each は繰り返しをするメソッドで、 array1 に要素のある間ずっと { } で囲まれた処理を繰り返します。
上のプログラムを実行すると次のように表示されます。
MT001 Zoysia japonica 0.5 MT001 Miscanthus sinensis 0.3 MT001 Aeginetia indica 0.01 MT002 Imperata cylindrica 0.3 #同じものがもう一つ出力される。省略します。
list[0] list[3]
配列についてはもっといろいろとたくさんの機能があります。でも、ここでは必要最低限のことだけを説明しました。他の機能はまた後で説明する予定です。
次のページでは配列に似たハッシュというものを説明します。