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