我希望我的程序在用户不键入时在参数中设置默认值。 到目前为止我的代码:
(define nodo%
(class object%
(init INFO)
(init HIJOS)
(init VISITADO?)
(define info INFO)
(define hijos HIJOS)
(define visitado? VISITADO?)
(super-new)))
争辩说我不想违约是VISITADO? (访问西班牙语)
答案 0 :(得分:4)
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