如何获取特定结构的所有实例的列表
how to Get List of all instances of specific Struct
我想弄明白,如何获取特定结构的所有实例的列表让我们说:empInfo 是我的结构名称,它可以有三个以上的实例。因为实例名称是动态的。因此,我需要使用 for 循环或所有实例的任何字段值列出实例名称。
结构是否与其实例有关,我将在哪一点得到它。
最后,我需要特定结构的所有实例的 FNAME。
(struct empInfo(FNAME LNAME IDNO PHONE EMAIL)#:mutable)
(define PersonOne(empInfo "S" "R" 13 "+44" "A@email.com"))
(define PersonTwo(empInfo "H" "I" 31 "+44" "H@email.com"))
(define PersonThree(empInfo "A" "Q" 1 "+44" "S@email.com"))
(define ilist(list (empInfo-FNAME PersonOne) (empInfo-FNAME PersonTwo) (empInfo-FNAME PersonThree)))
关于互动 window
> ilist
'("S" "H" "A")
我只是想用循环来做。
一般情况下,我们会使用 map
:
(define people (list PersonOne PersonTwo PersonThree))
(map empInfo-FNAME people)
=> '("S" "H" "A")
如果您要从头开始寻找解决方案,只需遍历列表并在每个元素上应用 empInfo-FNAME
,构建一个新列表作为输出:
(define (first-names lst)
(if (null? lst)
'()
(cons (empInfo-FNAME (car lst))
(first-names (cdr lst)))))
(first-names people)
=> '("S" "H" "A")
我想弄明白,如何获取特定结构的所有实例的列表让我们说:empInfo 是我的结构名称,它可以有三个以上的实例。因为实例名称是动态的。因此,我需要使用 for 循环或所有实例的任何字段值列出实例名称。 结构是否与其实例有关,我将在哪一点得到它。
最后,我需要特定结构的所有实例的 FNAME。
(struct empInfo(FNAME LNAME IDNO PHONE EMAIL)#:mutable)
(define PersonOne(empInfo "S" "R" 13 "+44" "A@email.com"))
(define PersonTwo(empInfo "H" "I" 31 "+44" "H@email.com"))
(define PersonThree(empInfo "A" "Q" 1 "+44" "S@email.com"))
(define ilist(list (empInfo-FNAME PersonOne) (empInfo-FNAME PersonTwo) (empInfo-FNAME PersonThree)))
关于互动 window
> ilist '("S" "H" "A")
我只是想用循环来做。
一般情况下,我们会使用 map
:
(define people (list PersonOne PersonTwo PersonThree))
(map empInfo-FNAME people)
=> '("S" "H" "A")
如果您要从头开始寻找解决方案,只需遍历列表并在每个元素上应用 empInfo-FNAME
,构建一个新列表作为输出:
(define (first-names lst)
(if (null? lst)
'()
(cons (empInfo-FNAME (car lst))
(first-names (cdr lst)))))
(first-names people)
=> '("S" "H" "A")