【ルビー合宿2】二重ハッシュを扱う

(問題2)

配列の内部に、複数のユーザーの情報をハッシュとして持つ変数user_dataがあります。

1
2
3
4
5
user_data = [
 {user: {profile: {name: 'George'}}},
 {user: {profile: {name: 'Alice'}}},
 {user: {profile: {name: 'Taro'}}},
]

user_dataを利用して、全てのユーザーの名前だけが出力されるようにRubyでコーディングしてください。
ただし、出力結果は次のようになるものとします。

1
2
3
George
Alice
Taro

 

(解答)

1
2
3
user_data.each do |u|
  puts u[:user][:profile][:name]
end

 

(考察)

user_dataという配列にハッシュが複数ネストされています。


最初に、user_dataという配列をeach文で展開して、user(親)→profile(子)→name(孫)へと階層を移動するためにまず、 u[:user] で profile が呼び出せます。次に、[:user][:profile] で name を呼び出し、最後に、[:profile][:name] で George(Alice,Taro)が呼び出せます。

 

以上