common-list基础知识--多值的返回与接收
返回多值:(values 1 2 3)
=>
1
2
3
或: (gethash 'a x) => 100 T
都是多值返回的例子。
多值的接收:如多接收函数多个值的返回呢?用multiple-value-bind:
(multiple-value-bind (x y) (gethash 'a x)
(if y
(print "true")
(print "err"))) =>true
你可以通过multiple-value-call将多值应用到第二个函数上:
(multiple-value-call #'+ (values 1 2 3)) => 6
(multiple-value-list (values 'a 'b 'c)) => (a b c)
二。宏生成函数:
(defmacro defun-u (name param body)
`(defun ,name ,param
;this is a fun named ,name
(,@body)))
使用宏函数生成函数:
(defun-u getMoney (username) ;用刚刚定义的宏生成一个函数,用来去对于用户的钱数。
(getf username 'money))
调用:(defvar lizhi nil) ;定义一个叫李志的人
(setf (getf lizhi 'money) 1000) ;设置他有1000元
(getMoney lizhi) ;调用用宏生成的函数显示李志的钱。