如何获取特定结构的所有实例的列表

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")