2013-10-06 46 views
1

我想让我的程序在用户没有输入时在参数中放置一个默认值。 到目前为止我的代码:球拍上课缺省/可选参数?

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

我想使默认是VISITADO的arguemen't? (西班牙语为访问)

回答

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 

the documentation