2015-04-06 73 views
0
(set! max-vector  9) 

(set! procedures-vector (vector (vector 0 0 0) 
           (vector 1 1 1) 
           (vector 2 4 2) 
           (vector 3 9 4) 
           (vector 4 16 8) 
           (vector 5 25 12) 
           (vector 6 36 18) 
           (vector 7 49 24) 
           (vector 8 64 32))) 

(set! drawables-index 0) 
(while (< drawables-index max-vector)  
     (set! vector-element (vector-ref procedures-vector drawables-index)) 
     (set! element-length (vector-length vector-element)) 

     (set! vector-element-a (vector-ref vector-element 0)) 
     (set! vector-element-b (vector-ref vector-element 1)) 
     (set! vector-element-c (vector-ref vector-element 2)) 

     (set! drawables-index (+ drawables-index 1))) 

的問題是,在每一次迭代的矢量元素A,B & c是 一樣!所以我看到(0 0 0)足夠公平和(1 1 1) - 好吧,這很酷,但它繼續產生(2 2 2)(3 3 3)。我在程序向量上驗證了元素長度 vector-ref的結果,並且它在向量列表的每個元素中迴避了3(正確!3個元素)。如何訪問元素向量載體

好吧,我很狡猾。請一些明智的靈魂,看看這個,看看我是否可以幫助 。由於

+0

你能否詳細解釋一下結構化?目前尚不清楚.. – 2015-04-06 09:10:11

回答

1

與嵌套向量-REF載體您訪問載體:

(vector-ref (vector-ref vector row) column) 

你改變與vector-set! -ing嵌套向量數據:既然你做3次,你

(vector-set! (vector-ref vector row) column value) 

可以選擇行向量作爲臨時變量:

(let ((rowv (vector-ref vector row))) 
    (let ((a (vector-ref rowv 0)) ...) 
    (vector-set! rowv 0 (+ a 1)) ...)) 

set!改變什麼變量名指向。他們從不改變它指向的實際對象。