如果你已经看过我之前的问题,那么你就已经知道我对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
感谢您的回答,评论和反馈!
答案 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"