racket - 在 Racket 中,是否有可能在 big-bang 中拥有多个事件处理程序?
问题描述
我想在每个刻度上做两件不同的事情。在大爆炸环境中是否可以有多个即时事件处理程序?
这就是我想做的:
(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 了:)如果你有 3 个或 4 个或 10 个要一起组成的处理程序怎么办?你能设计一个函数来获取处理程序列表并生成单个处理程序函数吗?
推荐阅读
- c# - 如何在控制台中查看列表的内容?
- node.js - 如何通过url在节点js中呈现日志/文本文件?
- c++ - C++ unique_ptr() 用法
- javascript - React 内联样式不会影响我的自定义组件
- maven - Maven(-exec-plugin) 解析 *(星号)符号
- c# - 无法解析范围服务
- android - 等待 AsyncTask postExecute 继续
- python - Python & BeautifulSoup 4/Selenium - 无法从 kicksusa.com 获取数据?
- generics - 泛型 - 约束到相同的子类型
- android - 如何将转义的 JSON 行传输到 bean 列表