2
我对Scheme很新,我正在使用DrRacket,希望能得到一些急需的帮助。Scheme(DrRacket) - 输出整个结构
我需要“结合”我的结构的四个字段值,以使您应该返回的单个结构。
四个字段值我指的是在代码中的if语句:
((拍卖itemnum anentry)(拍卖名称anentry)(拍卖currbid anentry)(拍卖状态anentry ))
这当然不起作用,因为它不会让我运行。
这意味着我的第二条语句也不起作用,但如果我能弄清楚第一条,那么第二条就清楚了。
我所需要的输出为:(使拍卖50“鲍勃” 100“打开”)
(至少在第二检查预期)
但搞清楚第二次检查,预计将使其他人也工作。
这里是我的代码:
(define-struct auction (itemnum name currbid status))
(define Auction1
(make-auction 50 "Bob" 100 "Open"))
(define Auction2
(make-auction 20 "Joe" 40 "Closed"))
;; Data Definition of an auction
;; An auction is a structure: (make-auction itemnum name currbid status)
;; interp. item number, name, current bid, and status, represented
;; by a string
;; Signature: auctionbid: string number entry -> entry
;; Purpose: Consumes a bidder, a bid amount, and an auction entry
;; then returns an entry
;; Tests:
(check-expect (auctionbid "Frank" 150 Auction1) (make-auction 50 "Frank" 150 "Open"))
(check-expect (auctionbid "Billy" 80 Auction1) (make-auction 50 "Bob" 100 "Open"))
(check-expect (auctionbid "Jenny" 50 Auction2) (make-auction 20 "Joe" 40 "Closed"))
;; Define:
(define (auctionbid aname bid anentry)
(cond
[(or (< bid (auction-currbid anentry)) (string=? "Closed" (auction-status anentry)))
((auction-itemnum anentry) (auction-name anentry)
(auction-currbid anentry) (auction-status anentry))]
[(> bid (auction-currbid anentry))
((auction-itemnum anentry)(aname)
(bid)(auction-status anentry))]
))
虽然我可以发表一个答案,但我认为你非常接近自己搞清楚了。提示:您如何制作“拍卖”结构的实例?例如,你是如何为'Auction1'和'Auction2'变量这样做的?你可以在'cond'表达式的两个地方做同样的事情吗? – 2014-09-28 04:33:18
也许我只是在推翻它,因为我似乎无法弄清楚这一点。这让我觉得我应该在if语句中加入'(拍卖(拍卖品)'(拍卖名称)'(拍卖 - 现货)'(拍卖状态)'',但这不起作用无论是。 – BBladem83 2014-09-28 05:23:04
@ BBladem83你可以发布您尝试过的_actual_代码不起作用吗?这个问题很简单。提示:第二个案例应该是'(拍卖 - 项目资产阶段)aname bid(auction-status anentry))',也就是说'aname'和'bid'不能被括号包围。 – 2014-09-28 12:42:39