运行命令

运行命令

问题描述:

我具有以下为一个简单的类(堆栈)代码:运行命令

#lang racket 

(define stackClass% 
    (class object% 
    (super-new) 
    (init-field (mystack '(A B C)))  

    (define/public (push n) 
     (set! mystack (cons n mystack))) 

    (define/public (pop) 
     (cond [(empty? mystack) #f] 
      [else (define res (car mystack)) 
        (set! mystack (rest mystack)) 
        res])) 

    (define/public (show) 
     mystack) 

    mystack ; I want to output mystack at time of creation of class object; not working here; 

    )); end class; 


; USAGE: 
(define sc (new stackClass%)) 
(send sc push 1) 
(send sc push 2) 
(send sc show) 
(send sc pop) 
(send sc show) 

输出:

'(2 1 A B C) 
2 
'(1 A B C) 

我要输出mystack在创建对象的类的时间。但是,它在这段代码中不起作用,尽管没有显示错误。

使用以下代替(init-field (mystack '(A B C)))也于事无补:

(init (L '(A B C))) 
(define mystack L) 

我怎么能运行在类创建时的一段代码?

是的,你的代码运行良好。另外,“mystack”正在被评估。但是,它不产生输出。如果你想显示一些东西,你可以使用其中一个功能。尝试在代码中用(println mystack)代替mystack

+1

我知道我错过了很简单的事情。谢谢。 – rnso