如何在Ruby中用零初始化一个大小不确定的数组



我有一个方法,它接收一个可变大小的数组(它可以是任何大小(,我需要在数组中的任何位置添加一个计数器。

以下是IRB 的示例代码

▶▶ irb
2.5.5 :001 > arr = Array.new(0)
=> [] 
2.5.5 :002 > max = rand(1..99)
=> 95 
2.5.5 :003 > count = rand(1..max)
=> 11 
2.5.5 :004 > arr[count] += 1
Traceback (most recent call last):
2: from /home/elorat/.rvm/rubies/ruby-2.5.5/bin/irb:11:in `<main>'
1: from (irb):4
NoMethodError (undefined method `+' for nil:NilClass)
2.5.5 :005 >

我认为你有71%的机会要求这个:

def increment_and_extend_if_necessary(arr, idx)
arr.fill(0, arr.size..idx)      
arr[idx] += 1
end

arr = []

increment_and_extend_if_necessary(arr, 3)
arr #=> [0, 0, 0, 1] 

increment_and_extend_if_necessary(arr, 1)
arr #=> [0, 1, 0, 1] 

increment_and_extend_if_necessary(arr, 5)
arr #=> [0, 1, 0, 1, 0, 1] 

increment_and_extend_if_necessary(arr, 3)
arr #=> [0, 1, 0, 2, 0, 1] 

请参见数组#填充。

最新更新