/ / Ruby for loop dá erro de classe Nil ao atribuir valores de matriz - ruby, matrizes, loops, loop for

Ruby for loop dá erro de classe Nil ao atribuir valores de array - ruby, arrays, loops, for-loop

Eu tenho um problema. Estou codificando um plug-in para o Google Sketchup e estou tentando filtrar o valor da matriz e colocar os valores filtrados em outra matriz. Isso é feito assim:

for z in 0..points.length
points2[z]=points[z][1]
end

Onde "pontos" é uma matriz dupla. Alguém pode me dizer o que estou fazendo de errado?

Respostas:

4 para resposta № 1

Isso deve ser melhor:

points2 = points.map {|p| p[1]}

2 para resposta № 2

O que você está fazendo de errado está repetindo muito. Usando dados falsos:

ar = [1,2,3]
ar2 = []
for z in 0..ar.length
#off by one! Should be one less. But then you should test for empty arrays...
ar2[z] = ar[z]
end
p ar2 #[1, 2, 3, nil]

As outras respostas defendem map e eles estão certos, mas você poderia transformar o loop for em um menos sujeito a erros como este:

for z in ar
ar2 << z
end

1 para resposta № 3

O que você está fazendo de errado? Fã de for loop que eu sou, você deve usar um estilo funcional, também conhecido como. Maneira Ruby:

points2 = points.map { |element| element[1] }

Caso contrário, você teria que postar um exemplo melhor se quiser que as pessoas diagnostiquem seu loop for.