在球拍中,有可能在大爆炸中有多个事件处理程序吗?

人气:845 发布:2022-10-16 标签: eventhandler racket

问题描述

我想在每个滴答声中做两件不同的事情。在大爆炸环境中可以有多个即时事件处理程序吗?

这是我想做的:

(big-bang world

  (on-draw show-world)

  (on-tick event1 event2 1))

(big-bang world

  (on-draw show-world)

  (on-tick event1 1)

  (on-tick event2 1))

这两种方法都不允许。有办法做到这一点吗?

谢谢您。

推荐答案

表示什么?

例如,假设

;; A World is a Nat (a natural number).

下面是两个刻度处理程序:

;; advance-by-one : World -> World
(define (advance-by-one w)
  (add1 w))

;; reset-at-ten : World -> World
(define (reset-at-ten w)
  (if (< w 10) w 0))

如果当前World是9,那么您期望下一个World是什么?(我能想出两个似是而非的答案,你必须选一个。)

是否可以定义另一个具有您想要的含义的函数,并将该(单个)函数用作记号处理程序?(提示:您应该使用两个现有的处理程序函数,而不是尝试将它们的定义合并到一个大函数中。)

(如果您已经到达ISL:)如果您有三个、四个或十个您想要组合在一起的处理程序怎么办?您能设计一个接受处理程序列表并生成单个处理程序函数的函数吗?

543