(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和amp; c是 相同 !所以我看到(0 0 0)足够公平和(1 1 1) - 好吧这很酷但是 它继续产生(2 2 2)(3 3 3)。我验证了元素的长度 vector-ref在程序向量上得到结果,它回归3 (正确!3个元素,在矢量列表的每个元素中)。
好的,我很生气。有些明智的灵魂请看这个,看看我 可以帮助。感谢
答案 0 :(得分:1)
您可以使用嵌套的vector-ref访问向量中的向量:
(vector-ref (vector-ref vector row) column)
您使用嵌套向量vector-set!
更改数据:
(vector-set! (vector-ref vector row) column value)
由于你这样做了3次,你可以选择行向量作为临时变量:
(let ((rowv (vector-ref vector row)))
(let ((a (vector-ref rowv 0)) ...)
(vector-set! rowv 0 (+ a 1)) ...))
set!
改变变量名称所指的位置。它们永远不会改变它指向的实际对象。