我想创建以下文字:
"text0text1text2text3text4text5"
所以我尝试用.times
来做,但是我需要一个辅助变量来保存金额,因为.times
返回它执行的次数。
我可以这样做:
(0..5).inject(''){|a,b| a+"text#{b}"}
=> "text0text1text2text3text4text5"
但我觉得这段代码应该更简单。
那么,我有什么可读的替代方法来实现这一目标?
答案 0 :(得分:3)
请注意,要获得从0
到5
的数字范围,您需要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