• ベストアンサー

rubyのループ

ruby初心者です。 配列のループ処理において [12,3,123,123,12,3,123,123,12,312,123][0..3].each{|val| puts val } というように、上記 [0..3] のような対象を指定するようなことを をよくやるのですが、 ハッシュに対して同様のことって、どう書けば良いのでしょうか? 何か方法があるのでしょうか? 教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
  • siffon9
  • ベストアンサー率64% (136/211)
回答No.1

こんにちは Array(配列)は順番を持ってデータが格納されていますが、Hashは「キーと値のペア」が順番に関係なく格納されています。ですから対象を指定するには、対象になるペアのキーを指定してあげる必要があります。 下の例はキーを数値にしたHashでご質問文の例と同じ対象を処理する場合です。 h = {5=>"5_val", 4=>"4_val", 3=>"3_val", 2=>"2_val", 1=>"1_val", 0=>"0_val"} # キーが0,1,2,3のHashの値を順に表示する [0,1,2,3].each{|k| puts h[k]} # または (0..3).each{|k| puts h[k]} # 以下は参考です # 全てのペアの値を表示する場合 h.each{|k,v| print"key:#{k}, value:#{v}\n"} # 全てのペアに対してソートしたキーの順番で値を表示する場合 h.keys.sort.each{|k| puts h[k]} ちなみにRubyは専用カテゴリがありますので、そちらでご質問いただいたほうが良いですよ。

okwaver85758
質問者

お礼

回答有難うございます。 いろいろと勘違いをしていたようです。 頭の中を整理できたような気がします。勉強させていただきました。 >Rubyは専用カテゴリがありますので~ すいませんでした。よく見ていませんでした。今後気をつけます。 ベストアンサーです。