根据整数值创buildn个项目的数组

鉴于我有一个整数值,例如10

我怎样才能创build一个像[1,2,3,4,5,6,7,8,9,10] 10个元素的数组?

你可以画一个范围:

 [*1..10] #=> [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] 

Ruby 1.9允许多个splats,这相当方便:

 [*1..3, *?a..?c] #=> [1, 2, 3, "a", "b", "c"] 

又一个棘手的方法:

 > Array.new(10) {|i| i+1 } => [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] 
 def array_up_to(i) (1..i).to_a end 

这可以让你:

  > array_up_to(10) => [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] 

关于评论与棘手的方法:

 require 'benchmark' Benchmark.bm { |x| x.report('[*..] ') do [*1000000 .. 9999999] end x.report('(..).to_a') do (1000000 .. 9999999).to_a end x.report('Array(..)') do Array(1000000 .. 9999999) end x.report('Array.new(n, &:next)') do Array.new(8999999, &:next) end } 

小心,这个棘手的方法Array.new(n, &:next)比较慢,而其他三个基本方法是相同的。

  user system total real [*..] 0.734000 0.110000 0.844000 ( 0.843753) (..).to_a 0.703000 0.062000 0.765000 ( 0.843752) Array(..) 0.750000 0.016000 0.766000 ( 0.859374) Array.new(n, &:next) 1.250000 0.000000 1.250000 ( 1.250002) 

你可以这样做:

 array= Array(0..10) 

如果你想input,你可以使用这个:

 puts "Input:" n=gets.to_i array= Array(0..n) puts array.inspect