我已经设法用一个字段定义了一个结构,如何在一个结构或类中定义多个字段?
我是 R5RS 的新手,我只能提出有问题的代码,请将其视为表达我正在尝试做的伪代码。
(define recipe
(let (salt 5)
(sauce "ketchup")))
或者
(define recipe
'((let salt 5)
(let sauce "ketchup")))
最简洁和最常用的方法是什么?
大多数方案实现通过SRFI 9提供记录。因此,在您的情况下,您可以recipe
像这样定义记录类型:
(define-record-type <recipe>
(recipe salt sauce)
recipe?
(salt recipe-salt)
(sauce recipe-sauce))
然后你可以像这样使用它:
> (define salty-ketchup (recipe 5 "ketchup"))
> (recipe-salt salty-ketchup)
5
> (recipe-sauce salty-ketchup)
"ketchup"
如果您使用的是 Racket,则可以使用更简单的语法来定义结构。
(struct recipe (salt sauce))