2015-04-06 57 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!改变什么变量名指向。他们从不改变它指向的实际对象。