我有一个方法,它接收一个可变大小的数组(它可以是任何大小(,我需要在数组中的任何位置添加一个计数器。
以下是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]
请参见数组#填充。