Ruby:计数器,计数和递增

时间:2010-04-14 23:36:13

标签: ruby irb

如果你已经看过我之前的问题,那么你就已经知道我对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

我不知道=&gt; 1来自:S我应该这样做吗?我期待得到这个结果:

1 2 3 4 5 6 7 8 9 10

感谢您的回答,评论和反馈!

2 个答案:

答案 0 :(得分:3)

“=&gt; 1”来自IRB,而不是您的代码。在您输入IRB的每个语句之后,它会在“=&gt;”之后打印该语句的结果提示。

尝试在函数中打印换行符:

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 :(得分:2)

  

我不知道=&gt; 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"