我想创建以下文本:
"text0text1text2text3text4text5"
所以我尝试用 来做.times
,但是我需要一个辅助变量来保存金额,因为.times
返回它被执行的次数。
我可以这样做:
(0..5).inject(''){|a,b| a+"text#{b}"}
=> "text0text1text2text3text4text5"
但是我觉得这段代码应该更简单。
那么,我必须完成哪些可读的替代方案?
我想创建以下文本:
"text0text1text2text3text4text5"
所以我尝试用 来做.times
,但是我需要一个辅助变量来保存金额,因为.times
返回它被执行的次数。
我可以这样做:
(0..5).inject(''){|a,b| a+"text#{b}"}
=> "text0text1text2text3text4text5"
但是我觉得这段代码应该更简单。
那么,我必须完成哪些可读的替代方案?
请注意,要拥有从0
to的数字范围,5
您将需要一个6-times
循环,而不是5
.
您不需要任何辅助变量:
6.times do |i|
print "text#{i}"
end
会工作得很好。该Integer#times
方法将块执行的次数传递给附加0
块n-1
。该类Fixnum
甚至没有(从 2.0 开始)times
方法。
谢谢。[...]。但是,我不想打印文本,我想创建一个字符串。
那么最简单的方法是使用::new
构造函数方法Array
来创建一个临时的5
字符串数组,然后将它们连接在一起:
string = Array.new(6) { |i| "text#{i}" }.join
最佳答案在@LeeJarvis 的评论中
5.times.map { |x| "text#{x}" }.join