zoukankan      html  css  js  c++  java
  • 闭包

    我的理解:在一个函数或者某个语句块中可以定义或返回另一个函数,这个函数会依赖于包括它的函数或语句的某些变量,这个变量的传递就叫做闭包。

    正规定义:当函数引用到外部定义的变量时,这外部定义的变量称为自由变量(free variable)。函数引用到自由的词法变量时,称之为闭包(closure)。

    CL-USER> (defun add-to-list (num lst)
           (mapcar #'(lambda (x)
                   (+ x num))
               lst))
    ADD-TO-LIST
    CL-USER> (add-to-list 5 '(1 2 3))
    (6 7 8)

    CL-USER> (let ((counter 0))
           (defun reset ()
             (setf counter 0))
           (defun stamp ()
             (setf counter (+ counter 1))))
    STAMP
    CL-USER> (list (stamp) (stamp) (reset) (stamp))
    (1 2 0 1)

    ;对示例2的说明:你可以使用全局计数器来做到同样的事情,但这样子使用计数器,可以保护计数被非预期的引用。

  • 相关阅读:
    图2(矩环问题)
    图1(八连块)
    恶补一下DP+背包专题(刷刷水题)L2
    food(洛谷P4040 [AHOI2014/JSOI2014]宅男计划)
    滑动窗口
    Lawnmower(洛谷 CF115B)
    Price(洛谷P4109 [HEOI2015]定价)
    逆序对
    矩阵
    1.25日考试
  • 原文地址:https://www.cnblogs.com/flowjacky/p/2827591.html
Copyright © 2011-2022 走看看