Ruby Ruby Collections Ruby Hashes Working with Hash Values

Donald Lobree
Donald Lobree
8,564 Points

Why isn't this correct?

Here's my code:

grocery_list = grocery_item.values_at("item").inspect

When I run it in irb, I get this array returned:

["bread"]

So why am I not passing the tests?

Thank you!

Donny

hash.rb
grocery_item = { "item" => "Bread", "quantity" => 1, "brand" => "Treehouse Bread Company" }

if grocery_item.has_value?("Bread")
   grocery_item.store("food", true)
end

grocery_list = grocery_item.values_at("item").inspect

2 Answers

KRIS NIKOLAISEN
PRO
KRIS NIKOLAISEN
Pro Student 50,936 Points

Task 2 wants you to store an array in grocery_list. inspect returns a string whereas values_at returns an array

I added the following to the end of the code:

grocery_list = grocery_item.values_at("item").inspect

p grocery_list
p grocery_list.instance_of? String  
p grocery_list.instance_of? Array 

The result is

"[\"Bread\"]"                                                                            
true                                                                                     
false 

Then I tested

grocery_list = grocery_item.values_at("item")

p grocery_list  
p grocery_list.instance_of? String  
p grocery_list.instance_of? Array 

The result is

["Bread"]                                                                                
false                                                                                    
true  

So for task 2 you want:

grocery_list = grocery_item.values_at("item")