分配给数组并替换出现的nil值

Tob*_*ias 7 ruby arrays null

问候!

如下所示为数组赋值时,如何将nils 替换为0

array = [1,2,3]
array[10] = 2
array # => [1, 2, 3, nil, nil, nil, nil, nil, nil, nil, 2]
Run Code Online (Sandbox Code Playgroud)

如果在分配时不可能,我将如何以最佳方式进行分配?我想到了array.map { |e| e.nil? ? 0 : e },但是......

谢谢!

Ron*_*era 12

分配后更改数组:

array.map! { |x| x || 0 }
Run Code Online (Sandbox Code Playgroud)

请注意,这也转换false0.

如果你想赋值期间使用零,那就有点乱了:

i = 10
a = [1, 2, 3]
a += ([0] * (i - a.size)) << 2
# => [1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 2]
Run Code Online (Sandbox Code Playgroud)


Mag*_*nar 8

nil在数组中没有要替换的内置函数,所以是的,map是要走的路.如果较短的版本会让你更快乐,你可以这样做:

array.map {|e| e ? e : 0}
Run Code Online (Sandbox Code Playgroud)