闭包

过程可以出现在模块的顶层以及其他范围内,在这种情况下,它们称为嵌套过程。 嵌套的proc可以从其封闭的范围访问局部变量,如果它这样做,它就变成了一个闭包。 任何捕获的变量都存储在闭包(它的环境)的隐藏附加参数中,并且它们通过闭包及其封闭范围的引用来访问(即,对它们进行的任何修改在两个地方都是可见的)。

如果编译器确定这是安全的,则可以在堆上或堆栈上分配闭包环境。

在循环中创建闭包

由于闭包通过引用捕获局部变量,因此在循环体内通常不需要行为。 有关如何更改此行为的详细信息,请参阅 closureScope