#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
,这似乎是正确的。我要去哪里错了?
答案 0 :(得分:1)
您正在创建符号列表,而不是storeItem
。
'(x y z)
等效于(list 'x 'y 'z)
,而不是(list x y z)
。因此,如果要创建一个包含变量x
,y
和z
的值的列表,则需要使用后者。