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を探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
- ・ゆるやかでぃべーと タイムマシンを破壊すべきか。
- ・歩いた自慢大会
- ・許せない心理テスト
- ・字面がカッコいい英単語
- ・これ何て呼びますか Part2
- ・人生で一番思い出に残ってる靴
- ・ゆるやかでぃべーと すべての高校生はアルバイトをするべきだ。
- ・初めて自分の家と他人の家が違う、と意識した時
- ・単二電池
- ・チョコミントアイス
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
vbsでテキストファイル内の文字...
-
配列の値を置換するにはどうす...
-
VB.NET 2つの配列を連動して並...
-
エクセルへのデータの貼付時に...
-
数値を浮動小数点32bitHEXコー...
-
ループを違う条件で抜けるよう...
-
excelの、ある数式内の{}の意...
-
【エクセル】 関数による電子...
-
VBAで配列内のマッチ
-
MAXIFもどき(エクセル関数)
-
COLUMN(1:1)の意味を教え...
-
VB6で配列を文字列に変換する方...
-
VBAでダブルコーテーション入り...
-
Cプログラムについて
-
EXCEL/VBA 変数の値をクリップ...
-
Accessコンボボックスにレコー...
-
ワードで文字数を数える方法
-
フォームを開くときに、コンボ...
-
正規表現で、英数記号を含むパ...
-
エラーの意味は? Lvalue req...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
excelの、ある数式内の{}の意...
-
vbsでテキストファイル内の文字...
-
配列の値を置換するにはどうす...
-
VBAのWorksheetFunctionの引数...
-
VB6で配列を文字列に変換する方...
-
RichTextBoxの改行を認知してく...
-
エクセルへのデータの貼付時に...
-
COLUMN(1:1)の意味を教え...
-
○桁にある数値を取得する VB.N...
-
数値を浮動小数点32bitHEXコー...
-
VBSで特定の文字列が含まれる場...
-
VBAで配列に文字列が入らない?
-
エクセル、この関数の意味は?
-
【エクセル】 関数による電子...
-
copyRecordsetの数値16桁以上に...
-
in_addrからchar型の文字列の変換
-
ファイルの特定行を取り出したい.
-
VB 配列の内容をファイルに書...
-
VB.NET 2つの配列を連動して並...
-
配列に入った文字列を結合した...
おすすめ情報