ruby 基于整数值创建n个项目的数组

v8wbuo2f  于 2023-03-01  发布在  Ruby
关注(0)|答案(6)|浏览(159)

给定I具有整数值,例如10
如何创建一个像[1,2,3,4,5,6,7,8,9,10]这样的10个元素的数组?

gfttwv5a

gfttwv5a1#

您可以直接拆分一个范围:

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

Ruby 1.9允许多个splat,这非常方便:

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

qyuhtwio2#

还有另一个狡猾的方法:

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

iq0todco3#

关于使用巧妙方法的注解:

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)
zsohkypk

zsohkypk4#

def array_up_to(i)
    (1..i).to_a
end

它允许您:

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

yhxst69z5#

您可以执行以下操作:

array= Array(0..10)

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

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

bbuxkriu6#

我认为最有效的方法之一是:

(1..10).to_a

相关问题