我设法用一个字段定义一个结构,如何在一个结构或类中定义多个字段?
我是R5RS的新手,我只能提出有问题的代码,请将其视为伪代码,表达我想要做的事情。
(define recipe
(let (salt 5)
(sauce "ketchup")))
或
(define recipe
'((let salt 5)
(let sauce "ketchup")))
最简洁和最常见的方法是什么?
答案 0 :(得分:1)
大多数Scheme实现都通过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))