2017-09-22 12 views
0

私は間違いがどこにあるのか分かりません。私は、twitter_dataメソッドの下に大きなハッシュ配列を持っています。ハッシュはそのように構成されています。ハッシュの配列の戻り値

def twitter_data 
[{"User"=> 
    {"description"=> 
    "Description here", 
    "last twenty tweets"=> 
    ["tweets written out here"], 
    "number of followers"=>1000, 
    "number of friends"=>100, 
    "latest tweet"=> 
    "tweet written out here", 
    "number of tweets"=>1000, 
    "location"=>"Wherever, Wherever"}},] 
end 

ここで、すべてのユーザーとその説明を例としてリストしたいと思ったら、そのコードはそのように表示されると思いました。

twitter_data.each do |twitter_data| 
    puts "#{twitter_data[:twitter_data]}: #{twitter_data[:description]}" 
end 

しかし、その出力は約7:を提供していますが、その前にユーザー名や説明は表示されません。

+0

:働く何

は正しくハッシュを参照することです。 'User'の下のどのフィールドがユーザーの名前を定義していますか? – Joe

答えて

0

ご覧のとおり、descriptionのキーは、Userという別のハッシュにネストされています。データが不完全と思われるので、私は、印刷したい他のキーであるかを知らないが、あなただけの説明を印刷したい場合は、この1は、これが動作しない理由のカップルがあります

twitter_data.each do |user_data| 
    description = user_data["User"]["description"] 
    puts description 
end 
0

動作するはずです:

1)eachの中のtwitter_data要素は、次のようになります。{ 'User' => { 'description'...。そのハッシュでは、:descriptionキーの下に格納されている値はnilです。

2)正しいハッシュを参照する場所がtwitter_data['User']であっても、文字列の代わりに記号(例::description)を使用しています。その場合でも、キーのために保存された値はゼロになります。

3)文字列を使用する場所(たとえば:twitter_data)であっても、ハッシュに存在しないような要素を参照しています。これは単純に選択された例によるものかもしれません。コレクションの同じ変数名などの項目( `twitter_data`)確かに混乱していますを使用して

twitter_data.each do |data| 
    user_hash = data['User'] 
    puts "#{user_hash['twitter_data']}: #{user_hash['description']}" 
end 
関連する問題