2017-03-09 3 views
0

나는 간단한 클래스 (스택)에 대한 다음 코드를했다 :실행 명령

#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

예, 코드가 정상적으로 실행 중입니다. 또한 "mystack"이 평가 중입니다. 그러나 출력이 없습니다. 무언가를 표시하려면 여러 기능 중 하나를 사용할 수 있습니다. 코드에서 mystack(println mystack)으로 바꾸어보십시오.

+1

나는 아주 간단한 것을 놓친다는 것을 알았다. 감사. – rnso