index page
目次へ戻る   前へ戻る 次へ進む

配列


  • 配列を作る

    データがどんどんと増えていくと、ひとつずつデータを管理するのが難しくなってきます。例えば、前のページで作った 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
    #同じものがもう一つ出力される。省略します。
    

  • 要素を指定して取出す
    配列の要素には実はインデックスがついていて、1番初めのもののインデックスは 0 、2番目が 1 、3番目が 2 ・・・となっています。指定した要素を取り出したい場合には次のよう [ ] で囲んで指定します。
    list[0]
    list[3]
    
    しかし、僕自身はこの方法を使うことはほとんどありません。eachメソッドでは配列の要素数を考え無くてもいいので、それで取り出すほうが楽だからです。

    配列についてはもっといろいろとたくさんの機能があります。でも、ここでは必要最低限のことだけを説明しました。他の機能はまた後で説明する予定です。

    次のページでは配列に似たハッシュというものを説明します。


    目次へ戻る   前へ戻る 次へ進む