Ruby: méthode pour imprimer et soigné, un tableau
Je ne sais pas si cette question est trop bête, mais je n'ai pas trouvé un moyen de le faire.
Généralement pour mettre en évidence un tableau dans une boucle je fais ce
current_humans = [.....]
current_humans.each do |characteristic|
puts characteristic
end
Cependant, si j'ai ceci:
class Human
attr_accessor:name,:country,:sex
@@current_humans = []
def self.current_humans
@@current_humans
end
def self.print
#@@current_humans.each do |characteristic|
# puts characteristic
#end
return @@current_humans.to_s
end
def initialize(name='',country='',sex='')
@name = name
@country = country
@sex = sex
@@current_humans << self #everytime it is save or initialize it save all the data into an array
puts "A new human has been instantiated"
end
end
jhon = Human.new('Jhon','American','M')
mary = Human.new('Mary','German','F')
puts Human.print
Il ne fonctionne pas.
Bien sûr, je peux utiliser quelque chose comme cela
puts Human.current_humans.inspect
mais je veux apprendre d'autres alternatives!
Vous devez vous connecter pour publier un commentaire.
Vous pouvez utiliser la méthode
p
. À l'aide dep
est en fait équivalente à l'utilisation deputs
+inspect
sur un objet.Mais gardez à l'esprit
p
est plus un outil de débogage, il ne devrait pas être utilisé pour l'impression des enregistrements dans le flux normal.Il est également
pp
(pretty print), mais vous avez besoin de demander d'abord.pp
fonctionne mieux avec des objets complexes.Comme une note de côté, ne pas utiliser de retour explicite
devrait être
Et d'utilisation 2-les caractères de l'indentation, pas 4.
p
pas être utilisé (explication plus approfondie que le débogage si possible s'il vous plaît)? Aussi j'ai utilisép a
etputs a.inspect
sur un tableau appelé " a " et seulementp a
travaillé. Ai-je raté quelque chose?