在Scheme中克隆对象

时间:2013-04-20 17:05:39

标签: object racket cloning

我试图在Scheme中克隆一个对象,比如

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

然后

(define o2 o1)

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

1 个答案:

答案 0 :(得分:2)

写一份复制方法。然后:

(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)))