题
如果你看过我以前的问题,你已经知道我是一个大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
不隶属于 StackOverflow