返回块的整数#times替代?

时间:2013-04-17 13:35:39

标签: ruby

我想创建以下文字:

"text0text1text2text3text4text5"

所以我尝试用.times来做,但是我需要一个辅助变量来保存金额,因为.times返回它执行的次数。

我可以这样做:

(0..5).inject(''){|a,b| a+"text#{b}"}
 => "text0text1text2text3text4text5"

但我觉得这段代码应该更简单。

那么,我有什么可读的替代方法来实现这一目标?

2 个答案:

答案 0 :(得分:3)

请注意,要获得从05的数字范围,您需要6-times循环,而不是5

您不需要任何辅助变量:

6.times do |i|
    print "text#{i}"
end

工作得很好。 Integer#times方法将块从0执行到n-1次的次数传递到附加块。课程Fixnum doesn't even have(截至2.0)times方法。


  

感谢。 [...]。但是,我不想打印文本,我想创建一个字符串。

然后,最简单的方法是使用::new的{​​{1}}构造函数方法创建Array字符串的临时数组,然后将它们连接在一起:

5

答案 1 :(得分:1)

最好的答案是@LeeJarvis的评论

5.times.map { |x| "text#{x}" }.join