在Ruby中创建此String的不同方法?

时间:2014-01-14 12:16:52

标签: ruby

免责声明:是的,这是作业,是的,我已经解决了。

任务:创建字符串"0 10 20 30 40 50 60 70 80 90 100"< - 注意,没有空白

显然不使用直接赋值,而是使用循环,范围,拆分等工具。我已经使用10增量循环完成了这个,我很确定有更聪明的方法来解决它,我对备选方案感到好奇。

你将如何构建这样的字符串?

5 个答案:

答案 0 :(得分:3)

是的,使用Range#stepArray#*

(0..100).step(10).to_a * " "
# => "0 10 20 30 40 50 60 70 80 90 100"

答案 1 :(得分:3)

使用Range#step的第二个版本:

(0..100).step(10).to_a.join(' ')
# "0 10 20 30 40 50 60 70 80 90 100"

答案 2 :(得分:2)

只是为了与众不同而不使用#step

(0..10).map{|x| x * 10}.join(' ')

答案 3 :(得分:1)

Numeric#step也可以使用(这里有一个Ruby 2.1样式的哈希参数)

0.step(by: 10).take(11).join(' ')
#=> "0 10 20 30 40 50 60 70 80 90 100"

答案 4 :(得分:0)

恰恰相反,以下是使用times mapwith_objectinject的一些内容:

10.times.map{ |i| "#{ 10 * (i + 1) }" }.join(' ') # => "10 20 30 40 50 60 70 80 90 100"
10.times.with_object([]) { |i, o| o << "#{ 10 * (i + 1) }" }.join(' ') # => "10 20 30 40 50 60 70 80 90 100"
10.times.inject([]) { |o, i| o << "#{ 10 * (i + 1) }" }.join(' ') # => "10 20 30 40 50 60 70 80 90 100"