我试图在Scheme中克隆一个对象,比如
(define o1
(new cl%
[a 1] [b 2]))
然后
(define o2 o1)
当我用套装时!在o1上,它与o1一起改变了o2。但我想要具有相同属性的独立克隆。我该怎么办?
答案 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)))