开发者

How to declare an empty 2-dimensional array in Ruby?

Can somebody开发者_StackOverflow please tell me how to declare a new instance of a 2-dimensional array? Most of the languages use something like:

array = Array.new[2][2]

I don't know how to do it in Ruby.


You can do:

width = 2
height = 3
Array.new(height){Array.new(width)} #=> [[nil, nil], [nil, nil], [nil, nil]] 


To declare 2d array in ruby, Use following syntax with initialization value

row, col, default_value = 5, 4, 0
arr_2d = Array.new(row){Array.new(col,default_value)}
=> [[0, 0, 0, 0], 
    [0, 0, 0, 0], 
    [0, 0, 0, 0], 
    [0, 0, 0, 0], 
    [0, 0, 0, 0]]

We can do any level of nesting, like for 3d array(5 x 4 x 2): you can pass block to initialize array in most inner Array

z = 2
arr_3d = Array.new(row){Array.new(col){Array.new(z){|index| index}}}
=> [[[0, 1], [0, 1], [0, 1], [0, 1]], 
    [[0, 1], [0, 1], [0, 1], [0, 1]], 
    [[0, 1], [0, 1], [0, 1], [0, 1]], 
    [[0, 1], [0, 1], [0, 1], [0, 1]], 
    [[0, 1], [0, 1], [0, 1], [0, 1]]]

Now, you can access its element using [] operator like arr_2d[0][1], actually its array of arrays


You could also initialize passing a value:

Array.new(3) { Array.new(3) { '0' } }

Output:

[
 ["0", "0", "0"], 
 ["0", "0", "0"], 
 ["0", "0", "0"]
]


You can declare a multidimensional array in Ruby with:

Array.new(Number_of_ROWs){Array.new(Number_of_COLUMNs)}

How To Use This Syntax

Let us understand it by using above example i.e. array = Array.new[2][2].

So, in this example we've to declare an empty multidimensional array with 2 rows and 2 column.

Let us start implementing the our syntax now,

array = Array.new(2){Array.new(2)}

Now you've an array with 2 rows and 2 column with nil values.

Now the array variable contains [[nil, nil], [nil, nil]] which is consider as an empty multidimensional array or nil value multidimensional array.


simply: array = Array.new(8,Array.new(8))

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜