Я написал фрагмент кода, который создает вектор «табло», который содержит 3 отдельных вектора размера 3, каждый из которых содержит символ? по всем показателям 0-2. Когда я сейчас выполняю 'vector-set!' на первом векторе табло, чтобы изменить его первый элемент на '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 ? ?)
#(? ? ?)
#(? ? ?)