如何将结构对象放入列表?

时间:2018-10-14 21:26:33

标签: list scheme structure

#lang Scheme

(define-struct storeItem (id des cost))

(define redApple (make-storeItem 0 "red delicious apple" 1.99))
(define chickenLeg (make-storeItem 1 "boned chicken" 2.99))
(define porkLoin (make-storeItem 2 "processed pork" 4.99))
(define milkD (make-storeItem 3 "vitamin d milk" 3.99))
(define baguetteBread (make-storeItem 4 "french bread" 0.99))
(define orangeJuice (make-storeItem 5 "fruit juice drink)" 1.49))
(define beanCan (make-storeItem 6 "beans in a can" 2.49))

(define masterList '(redApple chickenLeg porkLoin milkD baguetteBread 
   orangeJuice beanCan))    

我正在尝试从结构中获取对象列表,但不确定语法是否正确。以下是我的疲倦

(storeItem-des (car masterList)

我期待"red delicious apple"

但我知道

storeItem-des: contract violation
expected: storeItem?
given: redApple

似乎正在返回redApple,这似乎是正确的。我要去哪里错了?

1 个答案:

答案 0 :(得分:1)

您正在创建符号列表,而不是storeItem

'(x y z)等效于(list 'x 'y 'z),而不是(list x y z)。因此,如果要创建一个包含变量xyz的值的列表,则需要使用后者。