获取一个值并将其传递给结构列表并返回一个具有相应值的列表

Posted

技术标签:

【中文标题】获取一个值并将其传递给结构列表并返回一个具有相应值的列表【英文标题】:Taking a value and passing it through a list of structures and returning a list that has the corresponding value 【发布时间】:2020-08-11 19:48:46 【问题描述】:

我正在尝试编写一个函数,该函数需要一年的时间和一个结构列表(定义为事件)作为输入并输出相应的结构。

(define-struct incident (name day mon yr)#:transparent)

(define cake (make-incident "cake" 15 "Apr" 2015))
(define Graduation (make-incident "graduation" 2 "Mar" 2017))

    (define (incidentYr yr aList)
  (foldl
   (lambda (x y) (if (equal? (incident-yr x) yr) (append x y) y))
   '()  aList))

(check-expect (incidentYr 2015 (list (incident "cake" 29 "Apr" 2015) (incident "graduation" 7 "Mar" 2017))) (list (incident "cake" 29 "Apr" 2015)))

但我得到的错误是:

    check-expect encountered the following error instead of the expected value, (list (incident "cake" 29 "Apr" 2015)). 
   :: append: expects a list, given (incident "cake" 29 "Apr" 2015)

好像没用。

【问题讨论】:

【参考方案1】:

在 foldl 的 lambda 中,将 (append x y) 更改为 (append (list x) y)。也可以改成(cons x y)

更自然的解决方案是使用过滤器而不是折叠:

(filter (λ (x) (= (incident-yr x) yr)) aList)

【讨论】:

以上是关于获取一个值并将其传递给结构列表并返回一个具有相应值的列表的主要内容,如果未能解决你的问题,请参考以下文章

如何从小部件的函数返回值,并将其传递给 Tkinter,Python 中的另一个小部件的函数

如何从模型实例(具有来自 api 的值)传递数据并将其提供给 Text() 小部件

如何从widget的函数返回值,并将其传递给Tkinter,Python中的另一个小部件的函数

创建对象并将其传递给活动失败

OnItemClick 如何从列表视图中获取单击项目的文本值

从输入字段中获取一个值并将其传递给 Paypal