作用域

✍ dations ◷ 2025-12-02 04:24:24 #计算机编程

在电脑程序设计中,作用域(scope,或译作有效范围)是名字(name)与实体(entity)的绑定(binding)保持有效的那部分计算机程序。不同的编程语言可能有不同的作用域和名字解析。而同一语言内也可能存在多种作用域,随实体的类型变化而不同。作用域类别影响变量的绑定方式,根据语言使用静态作用域还是动态作用域变量的取值可能会有不同的结果。

名字空间是一种作用域,使用作用域的封装性质去逻辑上组群起关相的众识别子于单一识别子之下。因此,作用域可以影响这些内容的名字解析。

程序员常会缩进他们的源代码中的作用域,改善可读性。

下列例子显示了C++语言中多种不同的作用域声明:

namespace N{                        // 命名空间作用域,仅是群组织别名   class C   {                     // 类作用域,定义/声明成员变量和函数      void f (bool b)      {                  // 函数作用域,包含可执行语句         if (b)         {               // 条件执行语句的无名作用域           ...         }      }   };}

静态作用域与动态作用域

静态作用域又叫做词法作用域,采用词法作用域的变量叫词法变量。词法变量有一个在编译时静态确定的作用域。词法变量的作用域可以是一个函数或一段代码,该变量在这段代码区域内可见(visibility);在这段区域以外该变量不可见(或无法访问)。词法作用域里,取变量的值时,会检查函数定义时的文本环境,捕捉函数定义时对该变量的绑定。

大多数现在程序设计语言都是采用静态作用域规则,如C/C++、C#、Python、Java、JavaScript……

相反,采用动态作用域的变量叫做动态变量。只要程序正在执行定义了动态变量的代码段,那么在这段时间内,该变量一直存在;代码段执行结束,该变量便消失。这意味着如果有个函数f,里面调用了函数g,那么在执行g的时候,f里的所有局部变量都会被g访问到。而在静态作用域的情况下,g不能访问f的变量。动态作用域里,取变量的值时,会由内向外逐层检查函数的调用链,并打印第一次遇到的那个绑定的值。显然,最外层的绑定即是全局状态下的那个值。

采用动态作用域的语言有Pascal、Emacs Lisp、Common Lisp(兼有静态作用域)、Perl(兼有静态作用域)。C/C++是静态作用域语言,但在宏中用到的名字,也是动态作用域。

相关

  • 高分子电解质聚电解质(polyelectrolyte)是带有可电离基团的长链高分子,这类高分子在极性溶剂中会发生电离,使高分子链上带上电荷。链上带正或负电荷的聚电解质分别叫做聚阳离子或聚阴离子
  • 绦虫见内文绦虫纲(学名:Cestoda)是一个寄生性扁形动物门的一个纲。人们常说的绦虫其实是多个物种的泛称。所有绦虫纲的物种都是寄生虫,其生活史可能各有不同,但这些物种的成虫寄生于
  • 中国总理中国总理,是指近代中国政府的政府首脑,现在多指中华人民共和国国务院总理,即中华人民共和国中央人民政府的最高领导人,位列最高级别的国家级正职。在中国历史上,总理一职作为政府
  • 康有溥康有溥(1867年-1898年9月28日),字广仁,号幼博,又号大广,广东南海人,康有为之弟。参与戊戌变法,慈禧太后重夺权力后,因梁启超带病往北京应付官试,与他同行,因而被捕,和谭嗣同、杨锐、林旭
  • 绝对阴谋《绝对阴谋》(英语:State of Play)是一部2009年上演的政治惊悚电影(英语:Political thriller),改编自2003年英国广播公司第一台同名影集。内容除了将原本长6个小时的系列情节浓缩、
  • 荷兰交通荷兰人口稠密且经济发达,也拥有很高水准的交通设施。根据2014-2015年世界经济论坛发布的世界竞争力报告,荷兰在交通方面是世界竞争力第四高的国家。荷兰的公路总长度达139,000
  • 植树植树一般用于林业、土地复垦、或美化环境的目的。它不同于从果树栽培的大型树木移植,成本较低。
  • IEC 61508IEC 61508是一项用于工业领域的国际标准,其名称是《电气/电子/可编程电子安全相关系统的功能安全》(Functional Safety of Electrical/Electronic/Programmable Electronic Sa
  • 明安 (兀鲁特部)明安(满语:ᠮᡳᠩᡤᠠᠨ,转写:),博尔济吉特氏,黄金家族后裔,蒙古科尔沁兀鲁特部贝勒。天命七年间归顺后金,初隶蒙古正黄旗,后改隶满洲正黄旗。《清史稿·明安传》中,将他与另一位明安贝
  • 这些年来《这些年来》是张国荣于1998年发行的粤语EP。