什么是“顶级绑定”?

时间:2013-07-02 21:27:58

标签: typing dynamic-binding

我遇到了在动态类型语言和变量赋值的上下文中使用的表达式顶级绑定

顶级的含义是什么?它与普通词法绑定动态绑定有何不同?

为更多上下文添加周围文本:

  
    

变量可以绑定到任何类型的值。您可以将mynum重新绑定到字符串:

         
      

mynum = ’Brown’

    
         

此绑定会持续到您为mynum指定其他值...它称为顶级绑定。我们将遇到绑定变量到绑定是临时的值的情况。

  

1 个答案:

答案 0 :(得分:2)

维基百科对Common Lisp页面上的顶级绑定进行了以下说明:

  

在Common Lisp中,一个只有顶级绑定的特殊变量   行为就像其他编程语言中的全局变量一样。一个   新值可以存储到其中,该值只是替换了什么   是在顶级绑定中。

具有顶级绑定的变量似乎是global variable的另一个名称。

您提供的具体示例表明它位于程序的最外层/全局scope中,而不是在执行期间消失的较小的临时范围。该变量可用于程序的任何部分,假设它在当前词汇或动态上下文中未被本地或临时覆盖。