使用首选默认值展开数组

And*_*imm 7 ruby arrays default-value

Array#[] =的文档说明了这一点

如果索引大于数组的当前容量,则数组会自动增长.

当它自动增长时,它会使用以下nil值:

arr = []
arr[2] = "!"
arr # => [nil, nil, "!"]
Run Code Online (Sandbox Code Playgroud)

是否可以指定前两个值的默认值?

目前,我正在做

arr = []
index = 2
currently_uninitialized_value_range = (arr.length)...(index)
default_values = currently_uninitialized_value_range.map{ "" }
arr[currently_uninitialized_value_range] = default_values
arr[index] = "!"
arr # => ["", "", "!"]
Run Code Online (Sandbox Code Playgroud)

这有点冗长.

我使用的是数组,而不是哈希值,因为它们表示我将要输入到电子表格中的值,而我正在使用的库(Axlsx)更喜欢逐行添加数据.

dbe*_*hur 3

Array#fill可能是你的门票。

arr = []

index = 2
arr.fill( "", arr.length...index )
arr[index] = "!"
# => ["", "", "!"]

index = 5
arr.fill( "", arr.length...index )
arr[index] = "!"
# => ["", "", "!", "", "", "!"]

index = 1
arr.fill( "", arr.length...index )
arr[index] = "!"
#=> ["", "!", "!", "", "", "!"]
Run Code Online (Sandbox Code Playgroud)