0

我有个问题。我正在为 Google Sketchup 编写一个插件,我正在尝试过滤掉数组值并将过滤后的值放入另一个数组中。这样做是这样的:

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

其中“points”是一个双数组。有人可以告诉我我做错了什么吗?

4

3 回答 3

4

这应该更好:

points2 = points.map {|p| p[1]}
于 2013-06-05T20:13:34.840 回答
2

你做错了什么是循环一次。使用虚假数据:

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]

其他答案提倡map并且他们是对的,但是您可以将 for 循环转换为更不容易出错的循环,如下所示:

for z in ar
  ar2 << z
end
于 2013-06-05T20:54:26.380 回答
1

你在做什么错?for我是循环的粉丝,你应该使用功能风格,又名。红宝石方式:

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

否则,如果您希望人们诊断您的 for 循环,则必须发布更好的示例。

于 2013-06-05T20:18:34.600 回答