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

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

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

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

Q&A

解決済

1回答

214閲覧

[Ruby] データが抜ける、Rubyのバグ?

kzd847686

総合スコア53

Ruby

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

1グッド

2クリップ

投稿2019/04/13 06:13

次のコードを行うと、なぜか"na"が表示されることがあります。必ずしも表示されるというわけではなく規則性はありませんが、頻繁に同じ事象が発生します。
これはRubyのバグなのでしょうか?Keyの数が多すぎるとハッシュは正しく機能しなくなるのでしょうか・・?

rb

1 2loop{ 3 4#1 5data = Hash[194 => 485, 21 => 0.84, 9981 => 47.8, 9571 => 0.59, 441 => 874,] #キーが10000個程のあるキーとバリューがともに数字なハッシュです 6#2 7keylist = data.keys.sort #Keyだけの配列を作りソートします 8 9#3 keylistがdataに含まれるかチェックするとたまに”na”が出る!! 10n = 0 11keylist.size.times{ 12 print data(keylist[n]) 13 n += 1 14} 15 16#dataの値を行更新します 17data = data_updated 18#0.1秒毎に繰り返します 19sleep(0.1) 20 21}
DrqYuto👍を押しています

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

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

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

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

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

guest

回答1

0

ベストアンサー

print data(keylist[n])

ローカル変数dataとは関係のないdataメソッドの呼び出しになりますが、意図したものでしょうか?


keylist.size.timesを用いるよりは

ruby

1#3 2keylist.each{|k| print data[k] }

を使った方がよいでしょう。

また、デバッグを容易にするために

ruby

1keylist.each{|k| print "[#{k},#{data[k]}]" }

などとしておくと、あとでどのキーで問題が発生したのかが把握しやすくなります。


"na"とはもしかしてNaNでしょうか?
そうであるならば無限大がらみ もしくは 0.0/0.0で発生しうる演算不能の非数です。

投稿2019/04/13 11:46

編集2019/04/13 11:47
asm

総合スコア15147

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

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

kzd847686

2019/04/15 14:16

丁寧に教えて頂きありがとうございます!解決しました。ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問