Je ne sais pas si cette question est trop idiote mais je n'ai pas trouvé de moyen de le faire.
Habituellement, pour mettre un tableau en boucle, je le fais
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
Ça ne marche pas.
Bien sûr, je peux utiliser quelque chose comme ça
puts Human.current_humans.inspect
mais je veux apprendre d'autres alternatives!
Vous pouvez utiliser la méthode p
. L'utilisation de p
est en fait équivalente à l'utilisation de puts
+ inspect
sur un objet.
humans = %w( foo bar baz )
p humans
# => ["foo", "bar", "baz"]
puts humans.inspect
# => ["foo", "bar", "baz"]
Mais gardez à l'esprit que p
est plus un outil de débogage, il ne doit pas être utilisé pour imprimer des enregistrements dans le flux de travail normal.
Il y a aussi pp
(jolie impression), mais vous devez d'abord l'exiger.
require 'pp'
pp %w( foo bar baz )
pp
fonctionne mieux avec des objets complexes.
En remarque, n'utilisez pas de retour explicite
def self.print
return @@current_humans.to_s
end
devrait être
def self.print
@@current_humans.to_s
end
Et utilisez l'indentation à 2 caractères, pas 4.