Object 在Scheme中克隆对象

Object 在Scheme中克隆对象,object,racket,cloning,Object,Racket,Cloning,我试图在Scheme中克隆一个对象,类似于 (define o1 (new cl% [a 1] [b 2])) 然后 (define o2 o1) 当我使用set时!在o1上,它与o1一起改变o2。但我想要具有相同属性的独立克隆。我该怎么办?写一个复制方法。然后: (define o2 (copy-cl%-thingy o1)) 像这样: (define (new aval bval) `(cl% [a ,aval] [b ,bval])) (define cl

我试图在Scheme中克隆一个对象,类似于

(define o1
    (new cl%
        [a 1] [b 2]))
然后

(define o2 o1)

当我使用set时!在o1上,它与o1一起改变o2。但我想要具有相同属性的独立克隆。我该怎么办?

写一个复制方法。然后:

(define o2 (copy-cl%-thingy o1))
像这样:

(define (new aval bval)
  `(cl% [a ,aval] [b ,bval]))
(define cl%-aval caddr)
(define cl%-bval cadddr)

(define (copy-cl%-thingy o)
  (new (cl%-aval o) (cl%-bval o)))

“当我在o1上使用set!时,它会随着o1改变o2。”这是不可能的。显示您的代码。