运行下面的代码块
#lang racket
(define nested-vector (make-vector 2 (make-vector 2 'a)))
(define inner-vector (vector-ref nested-vector 0))
(vector-set! inner-vector 0 'b)
(displayln nested-vector)
它显示:
#(#(b a) #(b a))
我希望它显示的是:
#(#(b a) #(a a))
意味着只有内部向量会改变。
为什么要向量集!像这样
您的代码等效于:
(define vector2 (make-vector 2 'a))
(define nested-vector (make-vector 2 vector2))
用这种方式编写时,您应该能够看到内部向量都是相同的向量,而不是两个不同的向量。因此,当您修改它时,的两个元素都会nested-vector
受到影响。
要使用两个不同的嵌套向量制作一个向量,您需要make-vector
为每个元素分别调用。
(define nested-vector (vector (make-vector 2 'a) (make-vector 2 'a)))
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句