On 2 December 2010 07:06, Nala Ginrut <nalagin...@gmail.com> wrote: > Hi, everybody! > I got a question while I'm trying GOOPS, here is some example code pieces: > ;;guile code > (define-class <test> () > (cache #:init-form 0) > (tt #:init-form 1 > #:allocation #:virtual > #:slot-set! (lambda (o v) > (slot-set! o 'cache > (cons v (slot-ref o 'cache))) > );;end lambda > #:slot-ref (lambda (o) #f) ;; ***FIXME: can I use generic "slot-ref" > without re-define here?? > .......... > ;;guile code end > ----------------------------------------------- > > Please notice the line with "***FIXME" .I know that the "slot-set!" and > "slot-ref" must be re-defined under "#:allocation #:virtual", but can I find > some approach that just re-define one of them? Maybe I'll need a > modified(with overload) "slot-set!", but I need a generic "slot-ref" in some > circumstance. I don't know how to do. If I called "slot-ref" in the > re-defination of "slot-ref", that would be recursively infinite. > How can I deal with this? Any help will be appreciated, thanks! >
I'm not sure this is what you mean... but yes, your #:slot-ref lambda can do a slot-ref on normal slots, such as "cache", e.g.: #:slot-ref (lambda (o) (car (slot-ref o 'cache))) Neil