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)更喜欢逐行添加数据.
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)