綾乃介です。

>From : matz / netlab.co.jp (Yukihiro Matsumoto)
Title:[ruby-list:17430] Re: 配列のハッシュ」
Message-ID:<E11YXKy-0002R6-00 / ev.netlab.co.jp>

> まつもと ゆきひろです
> 
> |#配列のハッシュ
> |db = [{'id'=>0,'flag'=>0,'tarm'=>1-2},
> |      {'id'=>1,'flag'=>1,'tarm'=>2-3}]
> 
> はハッシュの配列と呼ぶのではないかと思います。

 そうでした。db[0]['id']と書いたので、つい左から配列のハッシュ
と呼んでしまいました。

> 次に
> 
> |db.each{|v|
> |  v.keys{|k|
> |    print k['id'],"\n"
> |  }
> |}
> |
> |
> |
> |db[0].keys
> |
> |こんな感じで、試してみたのですがどうやってもループを作ること
> |が出来ません。
> 
> ということですが、具体的になにをやろうとしてなにができなかっ
> たのかをもう少し教えていただけませんか?

 すみません、巧く言葉で表現できないのですが、Perlで書くと、
これがやりたいのです。

#一個づつ全体を表示
for $i (0 .. $#LoH){
   for $role (keys %{ $LoH[$i] }) {
      print "element $i $role is $LoH[$i]{$role}\n";
   }
}

配列の一つ目の要素のハッシュを順番に表示して、2つ目が終わった
ら、配列の2つ目の要素のハッシュを表示して、それが終わったら、
また次...という具合に表示したいのです。

 それで、教えてもらったeach_keyを試してみたら、巧く出来まし
た。

db.each{|v|
  v.each_key{|k|
    p "#{k} = #{v[k]}"
  }
}

 確かに、keysで巧く行くはずがありませんでした。

 おかげで巧く行きました。ありがとうございます。

====================================================================
   綾乃介@IBARAKI Univ.
      E-mail: aya / big.or.jp
      URL:http://www5.big.or.jp/~aya/cgi-space/
====================================================================
|          CGIスクリプト新着情報メーリングリスト!!                |
|       http://www5.big.or.jp/~aya/cgi-space/script-ml.html         |