У меня есть массив лиц (класс содержит имя, фамилию и идентификатор) что мне нужно сделать, так это вернуть строку из этого массива, но в определенном формате пример будет более наглядным
array=[PERS1,PERS2]
Мне нужно это как возвращаемое значение: "Имя всех лиц: "+ ЛИЦ1.имя + ЛИЦ1.ПОСЛЕДНИЙ + "," + ЛИЦ2.имя +ЛИЦ2.ПОСЛЕДНИЙ +","
я знаю этот метод
array.each{ |per|
#but this will not return the format ,and with each I think I can only print (I'm new in the ruby field
}
все это потому, что мне это нужно при переопределении to_s , потому что мне нужно предоставить строку -> to_s
def to_s
"THE name of all preson"[email protected] #will not work as I want
end
Спасибо за ваше время и усилия, и если вам нужны какие-либо разъяснения, пожалуйста, дайте мне знать
Попробуй это,
array.each do |per|
"#{per.name} #{per.LASTN}"
end
Для получения дополнительной информации проверьте Интерполяция
each
просто перебирает коллекцию и возвращает саму коллекцию. Вы можете использовать map
и join
результат.
array.map { |person| "#{person.name} #{person.lastn}" }.join(',')
Или, если вы измените свой класс Person
, это может быть еще проще.
# I assume that the name of the class is Person and name and lastn are always present
class Person
def full_name
"#{person.name} #{person.lastname}"
end
end
# Then you can call this method on `map`.
array.map(&:full_name).join(',')
В каком классе вы пытались определить это
to_s
?