質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Q&A

解決済

3回答

889閲覧

Rubyでハッシュに次の要素があるかの判定

ois

総合スコア50

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

0グッド

0クリップ

投稿2017/12/21 01:19

Rubyのハッシュで.eachを使っている際、最後の要素の時だけ違う処理がしたいです。
そのために配列に次の要素があるかのif文を書きたいのですが、次の要素があるかをbooleanで返してくれるようなメソッドはありますか?

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

別解

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 を併用するのがミソ。

ループカウンターを自前で書かないのが Ruby 流。

投稿2017/12/21 03:31

編集2017/12/21 03:32
scivola

総合スコア2108

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

otn

2017/12/21 03:46

with_index(1) にすると最初に -1 しなくていいですが、どちらが良いかは難しい。
guest

0

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

netfish

総合スコア24

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ベストアンサー

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

coco_bauer

総合スコア6915

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問