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 № 1Isso 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.