
forループの中のハッシュをeachしたいのですが、
printすると、一番最後のループのハッシュだけ表示されるようです。
全部中身を出すにはどういうソースを書けばよいのでしょうか。
-----------------------
center = 7
for i in 5..13
if center < 9
ban = { "i" => center }
center += 1
else
ban = { "i" => center }
center = center % 9
center += 1
end
end
ban.each{|key, value|
print(key + "=>", value)
}
No.2ベストアンサー
- 回答日時:
No.1 にて、mtaka2さんがおっしゃている通り、1要素のハッシュで上書きしていますので、結果は1要素になります。
なにをやりたいのかが、質問では分かりかねますが、
5から13までの文字列をキーにもつハッシュを作って表示したいのであれば、
center = 7
ban = { }
for i in 5..13
if center < 9
ban[i.to_s]= center
center += 1
else
ban[i.to_s]= center
center = center % 9
center += 1
end
end
ban.each{|key, value|
print(key , "=>", value , ",")
}
等でしょうか。
ハッシュでeachを使うと順序は保障されませんので、順序を気にするのであればmtaka2さんがおっしゃているように最初から配列をつかう方法が良いと思います。
No.1
- 回答日時:
ループの中で
> ban = { "i" => center }
という変数代入によってbanを「{"i => center}」すわなち1要素しかないハッシュという値で上書きしてすから、ループ終了後のbanの中身はは最後の代入結果だけになりますね。
banを「配列」にして追記してくようにすれば、
ループ終了後に追記内容を全て取り出せるようになります。
---ここから---
center = 7
ban = []
for i in 5..13
if center < 9
ban << {"i"=>center}
center += 1
else
ban << {"i"=>center}
center = center % 9
center += 1
end
end
ban.each{|banelement|
banelement.each{|key, value|
print(key,"=>", value,"\n")
}
}
---ここまで---
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
excelの、ある数式内の{}の意...
-
vbsでテキストファイル内の文字...
-
数値を浮動小数点32bitHEXコー...
-
配列の値を置換するにはどうす...
-
【エクセル】 関数による電子...
-
in_addrからchar型の文字列の変換
-
○桁にある数値を取得する VB.N...
-
列数の多いエクセルのデータを...
-
rubyで多重配列を表にしたくて...
-
RichTextBoxの改行を認知してく...
-
VBSで特定の文字列が含まれる場...
-
COLUMN(1:1)の意味を教え...
-
copyRecordsetの数値16桁以上に...
-
jsp~jspにhiddenを使って変数...
-
エラーの意味は? Lvalue req...
-
C言語 exitの使い方
-
VBAでダブルコーテーション入り...
-
フォームを開くときに、コンボ...
-
[VBS]変数を定数に変換する方法...
-
VBAで配列のNULL判定
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
配列の値を置換するにはどうす...
-
excelの、ある数式内の{}の意...
-
COLUMN(1:1)の意味を教え...
-
VBAのWorksheetFunctionの引数...
-
エクセル、この関数の意味は?
-
RichTextBoxの改行を認知してく...
-
vbsでテキストファイル内の文字...
-
○桁にある数値を取得する VB.N...
-
複数ディレクトリの監視(VB.NET...
-
エクセルへのデータの貼付時に...
-
数値を浮動小数点32bitHEXコー...
-
VBSで特定の文字列が含まれる場...
-
【エクセル】 関数による電子...
-
VB 配列の内容をファイルに書...
-
小数点の表示。
-
VBAで配列に文字列が入らない?
-
in_addrからchar型の文字列の変換
-
配列の座標指定について。
-
ループを違う条件で抜けるよう...
-
初心者プログラミング
おすすめ情報