我有一个简单类(堆栈)的代码:
#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)
如何在创建课程时运行一段代码?
答案 0 :(得分:0)
是的,您的代码运行正常。此外,正在评估“mystack”。但是,它不会产生任何输出。如果要显示某些内容,可以使用多种功能之一。尝试在代码中将mystack
替换为(println mystack)
。