【ルビー合宿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)が呼び出せます。
以上