如何从结构中获取列表?

时间:2018-11-09 17:04:04

标签: list struct scheme racket

我有给定的结构:

(define-struct clr ( r g b a)

我想列出一个清单:

(list (list r)(list g)(list b)(list a)

我当前的代码:

(define clrTolist
    (lambda (clr)
    (map list (list clr))))

(clrTolist (make-clr 0 0 0 0))

这就是我得到的结果:

list (list (make-clr 0 0 0 0)))

我不希望结构名称显示在我的结束列表中。

1 个答案:

答案 0 :(得分:1)

您可以使用以下语法从结构中“访问”单个值:

id-field

所以就您而言

clr-r myred

将返回元素myred的r的特定值

您要创建一个包含元素所有值的列表,所以只需尝试

(list (clr-r clr) (clr-g clr) (clr-b clr) clr-a clr))

请务必了解结构及其定义。我推荐HtdP https://htdp.org/2003-09-26/Book/curriculum-Z-H-9.html#node_chap_6

中的本章