【发布时间】:2012-12-20 16:52:51
【问题描述】:
Array#[]= 的文档指出
如果索引大于数组的当前容量,则 数组自动增长。
当它自动增长时,它会使用nil 值:
arr = []
arr[2] = "!"
arr # => [nil, nil, "!"]
是否可以指定前两个值的默认值?
目前,我正在做
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 # => ["", "", "!"]
这有点冗长。
我使用的是数组,而不是哈希,因为它们代表我将要输入到电子表格中的值,而我正在使用的库 (Axlsx) 更喜欢按行添加数据行。
【问题讨论】:
-
arr = Array.new(2, '') # => ["", ""]; arr[2] = "!"; arr => ["", "", "!"]。至少如果您只想初始化前 n 个元素。 -
@BernardK
Array.new(2), { '' }比Array.new(2, '')更安全。请参阅 rdoc 中 Array.new 的“常见问题”。
标签: ruby arrays default-value