zoukankan      html  css  js  c++  java
  • 形参前的&rest

    a.如果在一般形参前

    CL-USER> (defun hey (x &rest args)
           (member x args))
    HEY
    CL-USER> (hey '1 '(2 1 3))
    NIL
    CL-USER> (hey '1 '2 '1 '3)
    (1 3)

    CL-USER> (member '1 '(2 1 3))
    (1 3)

    CL-USER> (defun world (&rest fn)
           fn)
    WORLD
    CL-USER> (world 'a 'b)
    (A B)
    CL-USER> (world #'+ #'-)
    (#<Compiled-function + #x409FFC6> #<Compiled-function - #x40A0126>)
    CL-USER>

    说明:&rest的作用就是把参数x后面出现的所有参数包装成一个列表在函数体中使用。

    b.如果在关键字参数前,那么不会有打包成列表这一步

    CL-USER> (defun our-adjoin (obj lst &rest args)
           (if (apply #'member obj lst args)
               lst
               (cons obj lst)))
    OUR-ADJOIN
    CL-USER> (member 'a '((a) (b)))
    NIL
    CL-USER> (member '(a) '((a) (b)) :test #'equal)
    ((A) (B))
    CL-USER> (our-adjoin '(a) '((a) (b)) :test #'equal)
    ((A) (B))
    CL-USER> (our-adjoin '(a) '((a) (b)))
    ((A) (A) (B))

  • 相关阅读:
    无锁编程(五)
    Linux Kernel CMPXCHG函数分析
    无锁编程(四)
    无锁编程(三)
    无锁编程(二)
    无锁编程(一)
    无锁编程
    Linux同步机制
    Linux同步机制
    bootstrap css编码规范
  • 原文地址:https://www.cnblogs.com/flowjacky/p/2826403.html
Copyright © 2011-2022 走看看