我想做一些类似这样的事情:
(defstruct person
real-name
(fake-name real-name)) ;if fake-name not supplied, default to real-name然而,Common Lisp说的是The variable REAL-NAME is unbound.,所以我怎么才能让构造函数按顺序计算它的参数(就像我可以用function关键字参数一样),或者我应该如何做得更好呢?
发布于 2011-09-15 14:41:42
一种方法是:
(defstruct (person
(:constructor make-person (&key real-name
(fake-name real-name))))
real-name
fake-name)实际上,您可以根据自己的需要调整构造函数,包括
与make-xxx
考虑一下
(defstruct (person
(:constructor make-person (real-name
&optional (fake-name real-name))))
real-name
fake-name)您甚至可以使用&aux lambda-list关键字初始化构造的字段:
(defstruct (person
(:constructor make-person (real-name
&aux (fake-name (format nil
"fake-of-~A"
real-name)))))
real-name
fake-name)https://stackoverflow.com/questions/7426027
复制相似问题