【发布时间】:2019-11-23 15:45:12
【问题描述】:
在 CLTL2 中有一个结构示例 ice-cream-factory 为 follows,据称它会创建两个构造函数。这是结构定义:
(defstruct (ice-cream-factory
(:constructor fabricate-factory
(&key (capacity 5)
location
(local-flavors
(case location
((hawaii) '(pineapple macadamia guava))
((massachusetts) '(lobster baked-bean))
((california) '(ginger lotus avocado
bean-sprout garlic))
((texas) '(jalapeno barbecue))))
(flavors (subseq (append local-flavors
'(vanilla
chocolate
strawberry
pistachio
maple-walnut
peppermint))
0 capacity)))))
(capacity 3)
(flavors '(vanilla chocolate strawberry mango)))
CLTL2 状态:
结构类型 ice-cream-factory 有两个构造函数。标准构造函数 make-ice-cream-factory 接受两个名为 :capacity 和 :flavors 的关键字参数。对于这个构造函数,容量槽的默认值为 3,默认的口味列表是美国最喜欢的三人组和一匹黑马(不是死马)。
然而,评估标准构造函数会遇到未定义的函数错误:
(make-ice-cream-factory)
函数 COMMON-LISP-USER::MAKE-ICE-CREAM-FACTORY 是 未定义。
这是因为本书的部分内容不符合defstructs 上的最新标准吗?
指定:constructor 选项我只有一个构造函数fabricate-factory。
【问题讨论】:
标签: struct common-lisp