簡體   English   中英

Ruby:計數器,計數和遞增

[英]Ruby: counters, counting and incrementing

如果您曾經看過我以前的問題,那么您在使用Ruby時就已經知道我是個笨蛋。 因此,我發現了這個旨在進行C編程的網站,但我認為任何用C語言可以做的事,都必須在Ruby中實現(並且也更具可讀性)。

面臨的挑戰是打印出一堆數字。 我發現了這個漂亮的方法.upto(),並且使用了一個塊(並且實際上了解了它的用途)。 但是,在IRb中,我發生了一些意外的行為。

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

我不知道=> 1來自哪里:S我應該這樣做嗎? 我期望得到以下結果:

1 2 3 4 5 6 7 8 9 10

感謝您的回答,評論和反饋!

“ => 1”來自IRB,而不是您的代碼。 在您鍵入IRB的每個語句之后,它將在“ =>”提示后打印該語句的結果。

嘗試在函數中打印換行符:

def run 
  1.upto(10) { |x| print x.to_s + " " }
  print "\n"
end

然后看起來像這樣:

irb> q.run
1 2 3 4 5 6 7 8 9 10
  => nil

我不知道=> 1來自哪里

不用擔心 默認情況下, irb打印該方法執行的返回值。

即使您不編寫return語句(例如在C中),Ruby也會返回最后一個計算語句的值。

在這個例子中是1

就這樣。

例如嘗試:

class WhereIsTheReturn
    def uh?
        14 * 3 # no return keyword
    end
end


whereIsIt = WhereIsTheReturn.new
hereItIs = whereIsIt.uh?
print "Here it is : #{hereItIs}\n"

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM