Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。
Q&A
解決済
3回答
1152閲覧
総合スコア50
0グッド
0クリップ
投稿2017/12/21 01:19
0
Rubyのハッシュで.eachを使っている際、最後の要素の時だけ違う処理がしたいです。 そのために配列に次の要素があるかのif文を書きたいのですが、次の要素があるかをbooleanで返してくれるようなメソッドはありますか?
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
質問へのコメント
回答3件
別解
rb1h = {foo: 3, bar: 4, baz: 5} 2 3h_last_index = h.size - 1 4h.each.with_index do |(key, value), i| 5 if i == h_last_index 6 # 最後のとき 7 else 8 # 最後じゃないとき 9 end 10end
rb
1h = {foo: 3, bar: 4, baz: 5} 2 3h_last_index = h.size - 1 4h.each.with_index do |(key, value), i| 5 if i == h_last_index 6 # 最後のとき 7 else 8 # 最後じゃないとき 9 end 10end
with_index を併用するのがミソ。
with_index
ループカウンターを自前で書かないのが Ruby 流。
投稿2017/12/21 03:31
総合スコア2108
回答へのコメント
2017/12/21 03:46
ruby1h = {foo: 3, bar: 4, baz: 5} 2 3h.each do |k, v| 4 if k == h.keys.last 5 puts "Last: #{k}: #{v}" 6 else 7 '...' 8 end 9end
ruby
1h = {foo: 3, bar: 4, baz: 5} 2 3h.each do |k, v| 4 if k == h.keys.last 5 puts "Last: #{k}: #{v}" 6 else 7 '...' 8 end 9end
投稿2017/12/21 07:09
総合スコア24
ベストアンサー
Hashオブジェクトのlengthメソッドで、ハッシュに含まれている要素数が判ります。 繰り返しの回数が要素数と一致すれば最後の繰り返しです。
コードにすると、こんな感じ
hash_size = Hashオブジェクト.length #Hashオブジェクトの要素数 loop_counter = 1 #繰り返しの回数を入れる変数に初期値を入れる Hashオブジェクト.each_key{|key| if hash_size != loop_counter then # まだ最後ではないので、普通に処理 # 普通の処理を書く else # 最後の要素の時だけの違う処理を書く end loop_counter = loop_counter +1 #繰り返し回数を増やす }
投稿2017/12/21 02:04
総合スコア6921
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
15分調べてもわからないことはteratailで質問しよう!
ただいまの回答率85.30%
質問をまとめることで思考を整理して素早く解決
テンプレート機能で簡単に質問をまとめる
Rubyでハッシュに次の要素があるかの判定
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/12/21 03:46