Skip to content

Instantly share code, notes, and snippets.

@HintikkaKimmo
Created January 4, 2016 22:18
Show Gist options
  • Save HintikkaKimmo/fe9dfbe1c92b2c94011c to your computer and use it in GitHub Desktop.
Save HintikkaKimmo/fe9dfbe1c92b2c94011c to your computer and use it in GitHub Desktop.
Lesson 3 solution
class Person
#have a first_name and last_name attribute with public accessors
#attr_accessor
attr_accessor :first_name, :last_name
#have a class attribute called `people` that holds an array of objects
@@people = []
#have an `initialize` method to initialize each instance
def initialize(first_name, last_name)#should take 2 parameters for first_name and last_name
#assign those parameters to instance variables
#add the created instance (self) to people class variable
@first_name = first_name
@last_name = last_name
@@people << self
end
#have a `search` method to locate all people with a matching `last_name`
def self.search(last_name)
@@people.select {|person| person.last_name == last_name}
#accept a `last_name` parameter
#search the `people` class attribute for instances with the same `last_name`
#return a collection of matching instances
end
#have a `to_s` method to return a formatted string of the person's name
def to_s
"#{first_name} #{last_name}"
#return a formatted string as `first_name(space)last_name`
end
end
p1 = Person.new("John", "Smith")
p2 = Person.new("John", "Doe")
p3 = Person.new("Jane", "Smith")
p4 = Person.new("Cool", "Dude")
puts Person.search("Smith")
# Should print out
# => John Smith
# => Jane Smith
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment