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!

War es hilfreich?

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
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top