【发布时间】:2019-06-30 12:41:44
【问题描述】:
我编写了一段代码,它创建了一个向量“记分板”,其中包含 3 个大小为 3 的单独向量,所有向量都包含符号 ?在所有指数 0-2。当我现在执行“向量集!”时在记分牌的第一个向量上,要将其第一个元素更改为 'X,向量 2 和 3 也会发生变化。这是怎么发生的?
(define scoreboard (make-vector 3 (make-vector 3 '?)))
(define (display-scoreboard)
(display (vector-ref scoreboard 0))
(newline)
(display (vector-ref scoreboard 1))
(newline)
(display (vector-ref scoreboard 2))
(newline))
(define (X! pos)
(cond
((>= 3 pos) (vector-set! (vector-ref scoreboard 0) (- pos 1) 'X))
))
(display-scoreboard)
(X! 1)
(newline)
(display-scoreboard)
输出:
#(? ? ?)
#(? ? ?)
#(? ? ?)
#(X ? ?)
#(X ? ?)
#(X ? ?)
期望的输出:
#(? ? ?)
#(? ? ?)
#(? ? ?)
#(X ? ?)
#(? ? ?)
#(? ? ?)
【问题讨论】: