2

我希望我的程序在用户不键入时将默认值放入参数中。到目前为止我的代码:

    (define nodo%
     (class object%
     (init INFO)
     (init HIJOS)
     (init VISITADO?)
     (define info INFO)
     (define hijos HIJOS) 
     (define visitado? VISITADO?)
     (super-new)))

我不想默认的参数是 VISITADO?。(西班牙语访问)

4

1 回答 1

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

请参阅文档

于 2013-10-06T06:26:17.967 回答