我在使用球拍访问功能时遇到了一些麻烦。我是个新手,但直到现在我已经能够谷歌我对该语言的每一个答案。不是这个时候,在网上搜索"从类中调用函数" 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运行该函数。