Ruby: compteurs, comptage et incrémenter
Question
Si vous avez vu mes questions précédentes, vous auriez déjà savoir que je suis un grand nuby quand il vient à Ruby. Alors, j'ai découvert ce site qui est destiné à la programmation C, mais je pensais que ce que l'on peut faire en C, doit être possible en Ruby (et plus facile à lire aussi).
Le défi consiste à imprimer un tas de chiffres. J'ai découvert cette méthode nifty .upto () et j'ai utilisé un bloc (et comprendre réellement son but). Cependant, dans IRb, je suis un comportement inattendu.
class MyCounter
def run
1.upto(10) { |x| print x.to_s + " " }
end
end
irb(main):033:0> q = MyCounter.new
=> #<MyCounter:0x5dca0>
irb(main):034:0> q.run
1 2 3 4 5 6 7 8 9 10 => 1
Je ne sais pas où => 1 provient de: S dois-je faire cela autrement? J'attends d'avoir ce résultat:
1 2 3 4 5 6 7 8 9 10
Merci pour vos réponses, commentaires!
La solution
Je ne sais pas où => 1 vient de
Ne vous inquiétez pas. Par défaut imprime de irb
la valeur de retour de l'exécution de la méthode.
Même si vous n'écrivez pas la déclaration de return
(comme en C par exemple) Ruby retourne la valeur de la dernière instruction calculée.
Dans ce cas, il était 1
C'est tout.
Par exemple essayer:
class WhereIsTheReturn
def uh?
14 * 3 # no return keyword
end
end
whereIsIt = WhereIsTheReturn.new
hereItIs = whereIsIt.uh?
print "Here it is : #{hereItIs}\n"
Autres conseils
"=> 1" est de la CISR, pas votre code. Après chaque déclaration que vous tapez dans la CISR, elle imprime le résultat de cette déclaration après une demande « => ».
Essayez d'imprimer une nouvelle ligne dans votre fonction:
def run
1.upto(10) { |x| print x.to_s + " " }
print "\n"
end
Alors ça va ressembler à ceci:
irb> q.run
1 2 3 4 5 6 7 8 9 10
=> nil