我正在编写我的第一个打字/球拍应用程序,它是一个 cli 应用程序,它会询问你一些关于你一天的统计问题,例如你前一天晚上睡了多少小时,你吃了多少,你喝了多少杯咖啡等. 应用程序首先显示问题,然后通过函数等待用户输入read
。然后将收集到的信息放入struct
带有预定义字段的字段中。
struct
看起来像这样:
(struct: day-stats
([user-id : Integer]
;; ... 10 more Integer fields
))
我的方法是首先使用每个字段的默认值 0 初始化结构,然后使用struct-copy
函数在用户输入时使用信息更新结构的“实例”。
这就引出了一个问题,如何以最优雅的方式使用默认值初始化 struct?我是否创建了一个在编译/解析期间创建代码的宏,看起来像这样:
(day-stats 0 0 0 0 0 0 0 0 0 0 0)
或者是否已经有一个宏可以通过读取结构中的某种属性来做到这一点?
编辑:
在查阅了更多文档后,我发现您可以在结构中设置一个属性来自动设置字段。但是我找不到这是否可能在typed/racket
. 这是它的样子racket
:
(struct day-stats
([user-id #:auto]
;; ... 10 more Integer fields
)
#:auto-value 0)