2013-02-07 47 views
2

我正在用Ruby編寫一個Google sketchup插件,而且我遇到了一個小問題。我有包含數組的每一個點的描述,如:另一個每個故障中的每個聲明?

desc_array = ["anna ", "anna 45", "anna689", "anna36", "anna 888", "anna ",...] 

包含的每一個點的座標的數組是:

todraw_su = [ 
    [-16.23317, -16.530533, 99.276929], 
    [-25.142825, -12.476601, 99.237414], 
    [-32.716122, -5.92341, 99.187951], 
    [-38.964589, 4.181119, 99.182358], 
    [-41.351064, 18.350418, 99.453714], 
    [-40.797511, 33.987519, 99.697253], 
    ... 
] 

我想增加在谷歌的SketchUp文本每個點。根據SketchUp的API可以做到這一點的:

Sketchup.active_model.entities.add_text "This is the text", [x, y, z] 

我想:

todraw_su.each {|todraw| desc_array.each {|desc| Sketchup.active_model.entities.add_text desc,todraw }} 

但是,它給了我意想不到的事情,因爲它返回所有在desc_arrayto_draw每個元素的元素。

我想要的是to_draw中每個元素的desc_array中的每個元素。

+0

一個更好的標題就像「匹配來自兩個陣列的元素」。 – DigitalRoss

+0

Checkout http://www.ruby-doc.org/core-1.9.3/Array.html#method-i-zip –

+0

您的代碼完全按照它的說法進行操作;對於'todraw_su'的每一個元素,它遍歷'desc_array'中的每個元素,即所有元素。這絕對不是一個「故障」。 :) – nickgrim

回答

4
[desc_array, todraw_su].transpose.each do |desc, coord| 
    # ... 
end 

你也可以做到這一點與#zip像...

desc_array.zip(todraw_su).each do |desc, coord| 
    # ... 
end 

隨着#zip技術,結果總會有第一個陣列的尺寸,與第二截斷或nil-根據需要填充。這可能是也可能不是TRT。在這種情況下,移調會引起IndexError

+0

+1謝謝!有用 :) :) –

相關問題