init
允许这样的默认参数:
#lang racket
(define nodo%
(class object%
(init INFO)
(init HIJOS)
(init [VISITADO? #f])
(define info INFO)
(define hijos HIJOS)
(define visitado? VISITADO?)
(define/public (get-visitado?)
visitado?)
(super-new)))
(define n1 (new nodo% [INFO 'a] [HIJOS 'b]))
(send n1 get-visitado?) ; #f
(define n2 (new nodo% [INFO 'a] [HIJOS 'b] [VISITADO? #t]))
(send n2 get-visitado?) ; #t
顺便说一句,你也可以使用init-field
它来做你正在做的事情:
#lang racket
(define nodo%
(class object%
(init-field info
hijos
[visitado? #f])
(super-new)))
(define n1 (new nodo% [info 'a] [hijos 'b]))
(get-field visitado? n1) ; #f
(define n2 (new nodo% [info 'a] [hijos 'b] [visitado? #t]))
(get-field visitado? n2) ; #t
请参阅文档。