Ruby: Zähler, zu zählen und Inkrementieren
Frage
Wenn Sie meine vorherigen Fragen gesehen haben, würden Sie bereits wissen, ich bin ein großer Nuby, wenn es um Rubin kommt. So entdeckte ich diese Website, die für C-Programmierung gedacht ist, aber ich dachte, was man in C tun kann, muss in Ruby möglich sein (und besser lesbar zu).
Die Herausforderung ist es, eine Reihe von Zahlen zu drucken. Ich entdeckte diese raffinierte Methode .upto () und ich verwendet, um einen Block (und tatsächlich das Verständnis seinen Zweck). Doch in IRb, bekam ich ein unerwartetes Verhalten.
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
Ich habe keine Ahnung, wo die => 1 kommt aus: S kann ich tun dies sonst? Ich erwarte, dass dieses Ergebnis haben:
1 2 3 4 5 6 7 8 9 10
Vielen Dank für Ihre Antworten, Kommentare und Feedback!
Lösung
Ich habe keine Ahnung, wo die => 1 kommt von
Keine Sorge. Standardmäßig irb
druckt die Rückkehr Wert der Durchführung des Verfahrens.
Auch wenn Sie nicht schreiben die return
Anweisung (wie in C zum Beispiel) Rubin gibt den Wert der zuletzt berechneten Aussage.
In diesem Fall war es 1
Das ist alles.
Zum Beispiel versuchen:
class WhereIsTheReturn
def uh?
14 * 3 # no return keyword
end
end
whereIsIt = WhereIsTheReturn.new
hereItIs = whereIsIt.uh?
print "Here it is : #{hereItIs}\n"
Andere Tipps
Die "=> 1" ist von IRB, nicht den Code. Nach jeder Aussage, die Sie in IRB eingeben, druckt er das Ergebnis dieser Aussage nach einem „=>“ Eingabeaufforderung.
Versuchen Sie eine neue Zeile in Ihrer Funktion Druck:
def run
1.upto(10) { |x| print x.to_s + " " }
print "\n"
end
Dann wird es wie folgt aussehen:
irb> q.run
1 2 3 4 5 6 7 8 9 10
=> nil