Hash 配列にしまえるのは変数だけではなく、 配列もしまうことができる。 ルビ緒は、各卸売先の 1 年間の黒ごまの出荷量を調べることにした。 四半期のデータは次のようになった。 sesame.dat
さけでん商店 6 2 3 4 づるおが米商店 10 3 4 5 みがざスーパー 20 4 4 5 まづやま酒店 2 1 3 1
このデータを使ってプログラム sesame.rb で出荷量を調べる。 Hash 配列名を sesame とし、データを変数 monthly で取得して、 それが求める分解になっているかどうか調べ、 そうであるならば、 Hash 配列に分解したデータを配列としてしまうプログラムである。
#!/usr/koeki/bin/ruby sesame = Hash.new # 商店名と黒ごまのデータが入る Hash配列 $KCODE = 'e' while quarter = gets if /(\S+)\s+(\d+)\s+(\d+)\s+(\d+)\s+(\d+)/ =~ quarter sesame[$1] = [$2.to_i,$3.to_i,$4.to_i,$5.to_i] end end
実行してみると、何も実行されていないかのようなプログラムになる。
整数値が使われているので、文字列を整数値に変換する to_i method を使用して、p 文を実行した結果、例えば
% ./sesame.rb sesame.dat {"みがざスーパー"=>[20, 4, 4, 5], "さけでん商店"=>[6, 2, 3, 4], "まづやま酒店"=>[2, 1, 3, 1], "づるおが米商店"=>[10, 3, 4]}
と表示されれば、四則演算が可能になる。データを計算し、 総量を求めるには、この Hash 配列の中の配列を計算すればよい。 つづく
本日の講義 / 基礎プログラミング II / 2007 年度