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)              ;调用用宏生成的函数显示李志的钱。

posted @ 2013-10-22 16:35  误会僧  阅读(459)  评论(0编辑  收藏  举报