[英]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.