免责声明:是的,这是作业,是的,我已经解决了。
任务:创建字符串"0 10 20 30 40 50 60 70 80 90 100"
< - 注意,没有空白
显然不使用直接赋值,而是使用循环,范围,拆分等工具。我已经使用10增量循环完成了这个,我很确定有更聪明的方法来解决它,我对备选方案感到好奇。
你将如何构建这样的字符串?
答案 0 :(得分:3)
是的,使用Range#step
和Array#*
:
(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
map
,with_object
和inject
的一些内容:
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"