gpt4 book ai didi

scheme - 函数结构定义

转载 作者:行者123 更新时间:2023-12-02 05:15:38 25 4
gpt4 key购买 nike

我正在尝试实现这个功能

作者书

给定一本书,产生这本书的作者。这是我为此创建的数据-

(define-struct audiobook ( title author length-in-minutes voice-person))

(define-struct ebook ( title author size-in-kolobytes symbol ))

(define-struct hardcover (title author number-of-pages genre ))

(define audiobook1 (make-audiobook "The Hunger Games" "Suzanne Collins" "50 minutes" "David Larrson"))
(define audiobook2 (make-audiobook "Catching Fire" "Suzanne Collins" "55 minutes" "David Larrson"))
(define audiobook3 (make-audiobook "Mockingjay" "Suzanne Collins" "40 minutes" "David Larrson"))

(define ebook1 (make-ebook "Divergent" "Veronica Roth" "100000kbs" 'Kindle))
(define ebook2 (make-ebook "Dracula" "Bram Stocker " "134000kbs" 'Ebook))
(define ebook3 (make-ebook "Jane Eyre" "Charlotte Brontë " "400000kbs" 'IPad))

(define hardcover1 (make-hardcover "Pursued" "Jud White" "100000kbs" "Crime"))
(define hardcover2 (make-hardcover "Private Berlin" "James Patterson" "100000kbs" "Suspense"))
(define hardcover3 (make-hardcover "Francona" "Terry Francona" "100000kbs" "Sports"))

我试过了

(define (author-of-book n)
(audiobook-author n))

这只给了我有声读物的作者。有没有办法让我不必编写三个单独的函数就可以得到其余的作者? (比如电子书作者...)

最佳答案

这是另一种可能的实现方式,只是比@jozefg 的回答(经过测试和工作)短一点:

(define (author-of-book b)
((cond [(audiobook? b) audiobook-author]
[(hardcover? b) hardcover-author]
[(ebook? b) ebook-author])
b))

cond 表达式返回在每种情况下使用的正确过程,并且被选中的那个被应用到 b。例如:

(author-of-book audiobook1)
=> "Suzanne Collins"

(author-of-book ebook1)
=> "Veronica Roth"

(author-of-book hardcover1)
=> "Jud White"

关于scheme - 函数结构定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14699828/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com