球拍:从类球拍中调用一个功能

时间:2018-03-31 15:10:30

标签: function class racket

我在使用球拍访问功能时遇到了一些麻烦。我是个新手,但直到现在我已经能够谷歌我对该语言的每一个答案。不是这个时候,在网上搜索"从类中调用函数" yeild几乎没有任何信息。

在名为" item"的课程中,我希望能够运行该功能" special"只需输入:

(send item-name get-special)

get-special调用的函数对于每个项都应该是不同的。我尝试这样做的方法就是这样做(例如炸弹应该炸掉墙壁并在两个以前没有连接的地方之间开辟道路):

(send bomb add-use! "Cave"
      "\n\nThe left wall of the cave collapses, revealing an even darker cave ahead.")
(send bomb add-special!
      (lambda () (connect-places! spooky-cave "Hole in wall" cave "Hole in wall")))

这是项目%-class的结构:

(define item%
  (class object%
    (init-field (name "")
                (description "")
                (uses "")
                (special #f))
    (define/public (get-name) name)
    (define/public (get-description) description)
    (define/public (get-uses) (car uses))
    (define/public (get-event) (cdr uses))
    (define/public (get-special) (special))

    (define/public (add-use! place-name event-text)
      (set! uses (cons place-name event-text)))

    (define/public (add-special! func)
      (set! special func))

    (super-new)))

get-uses和get-event会正确返回place和event-text,但是我无法使get-special运行该函数。

0 个答案:

没有答案