Welcome to the Treehouse Community

Want to collaborate on code errors? Have bugs you need feedback on? Looking for an extra set of eyes on your latest project? Get support with fellow developers, designers, and programmers of all backgrounds and skill levels here with the Treehouse Community! While you're at it, check out some resources Treehouse students have shared here.

Looking to learn something new?

Treehouse offers a seven day free trial for new students. Get access to thousands of hours of content and join thousands of Treehouse students and alumni in the community today.

Start your free trial

Ruby Ruby Collections Build a Grocery List Program Create a Method That Returns a Hash

why does this say that it is not returning the hash when it explicitly say "return hash"

def create_shopping_list

hash = ["name" => "name", "item" => "array.new"] return hash

end

list = create_shopping_list

shopping_list.rb
def create_shopping_list

  hash = ["name" => "name", "item" => "array.new"]
  return hash

end

list =  create_shopping_list

1 Answer

Hashes use curly braces, not square brackets. You are creating an array with a hash in the middle of it.

[{"name" => "name", "item" => "array.new"}]

You probably want to do:

def create_shopping_list

  hash = {"name" => "name", "item" => "array.new"}
  hash

end

While I recognize this is a trivial method, standard Ruby practice is to only use return when you are breaking out of the middle of a method, otherwise it always returns the result of the last expression of the method.

ohh