Учитывая следующий код:Возвращающиеся объекты из массива в рубин
class Person
attr_accessor :first_name, :last_name
@@people = []
def initialize(first_name,last_name)
@first_name = first_name
@last_name = last_name
@@people.push(self)
end
def self.search(last_name)
@last_name = last_name #accept a `last_name` parameter
@@people.select { |person| person.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
#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
Что мне нужно сделать, чтобы вернуть выход под Should print out
бит? Я могу получить его, чтобы вернуть идентификатор объекта:
#<Person:0x007fa40c04cd08>
#<Person:0x007fa40c04c920>
#<Person:0x007fa40c04c5d8>
#<Person:0x007fa40c04c5b0>
Одна проблема, которую я вижу с этим, даже не зная, что в каждом из них: там должно быть только два значения, возвращаемые. Таким образом, часть поиска также неверна.
Что мне делать с этим?
Вы должны реализовать 'Person # to_s', чтобы делать то, что говорит комментарий, - *" # вернуть отформатированную строку как first_name (пробел) last_name "* - затем повторить над тем, что возвращает 'Person # search', и вызывается' Person # to_s' для каждого объекта. –
Также ваш метод поиска неверен. – andrewkday