如果你看过我以前的问题,你已经知道我是一个大NUBY当谈到红宝石。所以,我发现了这个网站,旨在为C语言编程,但我想任何一个可以在C做的,一定要在Ruby中可能(和更具可读性太)。

的挑战是要打印出一串数字。我发现这个漂亮的方法.upto(),我使用的块(实际上是理解它的目的)。然而,在内部评级法,我得到了一些意外的行为。

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打印返回方法的执行价值。

即使你不写return声明(像在C为例)红宝石返回最后一个计算语句的值。

在这种情况下,为1

这是所有。

例如尝试:

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


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

其他提示

在 “=> 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
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top