Skip to content

Instantly share code, notes, and snippets.

@dbc-challenges
Last active September 2, 2023 18:40
Show Gist options
  • Save dbc-challenges/eb26220a3a48f3219ace to your computer and use it in GitHub Desktop.
Save dbc-challenges/eb26220a3a48f3219ace to your computer and use it in GitHub Desktop.
class Drawer
attr_reader :contents
# Are there any more methods needed in this class?
def initialize
@contents = []
@open = true
end
def open
@open = true
end
def close
@open = false
end
def add_item
@contents << item
end
def remove_item(item = @contents.pop) #what is `#pop` doing?
@contents.delete(item)
end
def dump # what should this method return?
puts "Your drawer is empty."
end
def view_contents
puts "The drawer contains:"
@contents.each {|silverware| puts "- " + silverware.type }
end
class Silverware
attr_reader :type
# Are there any more methods needed in this class?
def initialize(type, clean = true)
@type = type
@clean = clean
end
def eat
puts "eating with the #{type}"
@clean = false
end
end
knife1 = Silverware.new("knife")
silverware_drawer = Drawer.new
silverware_drawer.add_item(knife1)
silverware_drawer.add_item(Silverware.new("spoon"))
silverware_drawer.add_item(Silverware.new("fork"))
silverware_drawer.view_contents
silverware_drawer.remove_item
silverware_drawer.view_contents
sharp_knife = Silverware.new("sharp_knife")
silverware_drawer.add_item(sharp_knife)
silverware_drawer.view_contents
removed_knife = silverware_drawer.remove_item(sharp_knife)
removed_knife.eat
removed_knife.clean_silverware
silverware_drawer.view_contents
silverware_drawer.dump
silverware_drawer.view_contents #What should this return?
fork = silverware_drawer.remove_item(fork) #add some puts statements to help you trace through the code...
fork.eat
#BONUS SECTION
# puts fork.clean
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment