2017-03-09 5 views
0

私は単純なクラス(スタック)のコード次き:Runコマンド

#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

はい、コードは正しく動作しています。さらに、「ミスマック」が評価されています。ただし、出力は生成されません。何かを表示したい場合は、いくつかの関数のうちの1つを使用できます。あなたのコードでmystack(println mystack)に置き換えてみてください。

+1

私は非常に単純なものを見逃していたことを知っていました。ありがとう。 – rnso

関連する問題