Avec le code ci-dessous, j'aimerais créer une to_s
méthode qui affiche les informations comme telles:Comment créer un to_s avec une variable d'instance pointant vers un tableau d'objets d'une autre classe?
Southside a 3 membres de l'équipe. Ces membres sont: Dario, qui a 22 ans. Ted, qui a 21 ans. Bob, qui a 44 ans.
Actuellement, je reçois ceci:
Southside a 3 membres de l'équipe. Ces membres sont:
[#<Person:0x000000025cd6e8 @name="Dario", @age=22>, #<Person:0x000000025cd670 @name="Ted", @age=21>, #<Person:0x000000025cd620 @name="Bob", @age=44>].
#<Team:0x000000025cd7d8>
La partie que je trouve difficile accède aux variables d'instance des objets de classe personne qui se trouvent dans le tableau des membres de l'équipe.
Voici les deux classes:
class Team
attr_accessor :name, :members
def initialize(name)
@name = name
@members = []
end
def <<(person)
members.push person
end
def to_s
puts "#{@name} has #{@members.size} team members."
puts "Those members are: #{@members}."
end
end
class Person
attr_accessor :name, :age
def initialize(name, age)
@name = name
@age = age
end
end
south_side_bowlers = Team.new("Southside")
south_side_bowlers << Person.new("Dario", 22)
south_side_bowlers << Person.new("Ted", 21)
south_side_bowlers << Person.new("Bob", 44)
puts south_side_bowlers
Murad, cela fonctionne bien. Une question: les 'to_s' dans 'm.to_s' sont-ils inutiles? – user169320
@ user169320 Vous pouvez faire '@ members.map (&: to_s) .join ('.')' Si vous le souhaitez. –
user169320, Murad vous suggère de changer la deuxième ligne de 'Team # to_s' à' "Ces membres sont: # {@ members.map {| m | m.to_s} .join ('.')}.' ' (en plus d'ajouter 'Person # to_s') –