2017-04-06 110 views
1
array = [[]] 
    for level in 0..counter-1 
    for line in 0..counter-1 
     array[level].push(rectangle[x+level][y+line]) 
    end 
    end 

我得到这个错误NoMethodError:未定义的方法`推”的零:NilClass红宝石,多维数组推错误

我想找到一个矩形内所有的广场,但是当我试图保存在自定义数组中的平方我得到一个错误。

array[level].push(rectangle[x+level][y+line]) 

所有我想在这里做,以产生像例如阵列的正方形[[3,4],[5,2],其将是

3 4 5 2。 问题是,array[0].push(rectangle[x+level][y+line])与数量而不是变量工作,但与变量'水平'它给了我错误,但是,如果我使用常数我不能生成多级数组。

有帮助吗?

+1

请显示“counter”和“rectangle”来自哪里。 –

+0

'rectangle'是函数参数(2d数组) – Aldon

回答

3

的问题是,array只有一个因素,这就是为什么它是工作水平= 0您可以轻松地解决这个问题是这样的:

array = [] 
for level in 0..counter-1 
    array.push [] 
    for line in 0..counter-1 
    array[level].push(rectangle[x+level][y+line]) 
    end 
end 
1

找到了解决办法

2darray = [[]] 
    i=0 
    for level in 0..counter-1 
    array = [] 
    for line in 0..counter-1 
     array.push(rectangle[x+level][y+line]) 
    end 
    2darray.push(array) 

产生1d阵列并将其附加到2d阵列

+2

几个问题与此。第一个for循环从不关闭,最后的2d数组将有一个空数组作为其第一个元素 – user81269