关闭静态环境
闭包是一个保持内部状态的过程:
定义一个返回闭包的过程
程序 make-an-adder
接受一个参数 x
并返回一个关闭该值的函数。换句话说,x
在返回函数的词法范围内。
#lang racket
(define (make-an-adder x)
(lambda (y)
(+ y x)))
用法
调用过程 make-an-adder
会返回一个闭包过程。
Welcome to DrRacket, version 6.6 [3m].
Language: racket, with debugging; memory limit: 128 MB.
> (define 3adder (make-an-adder 3))
> (3adder 4)
7
> (define 8adder (make-an-adder 8))
> (8adder 4)
12