作用域

✍ dations ◷ 2025-12-05 04:51:37 #计算机编程

在电脑程序设计中,作用域(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++是静态作用域语言,但在宏中用到的名字,也是动态作用域。

相关

  • 视网膜色素变性 19视网膜色素变性,或称视网膜色素病变(Retinitis Pigmentosa,简称RP),是一种遗传性眼科疾病。初期普遍的病征是夜盲、视野变窄,可以看到正前方景物,但略偏左右的视野就无法看见,RP病人
  • 文本文本文件一般指只有字符原生编码构成的二进制计算机文件,与富文本相比,其不包含字样样式的控制元素,能够被最简单的文本编辑器直接读取。由于结构简单,文本文件被广泛用于记录信
  • 印度电影观众印度杂志电影观众是由英国广播公司与华纳唱片公司合资兴办的印度杂志,主要评论宝莱坞电影、和电影演员。该杂志每年靠读者投票评选:
  • 军事技术与装备军事技术与装备,简称军备,罗列了古今各式各样的武器、技术,甚至理论,为军事学中重要的一环。QF 20磅炮
  • m ssup−2/sup米每二次方秒、米秒平方,是国际单位制中加速度的单位。这个单位是由基本单位中的长度单位米和时间单位秒得到的导出单位。记作m/s2、m·s−2或m s−2。加速度是用来描述速度
  • 娱乐软件协会娱乐软件协会(Entertainment Software Association,ESA)是美国电子游戏产业的贸易协会。它在1994年4月成立时名称为互动数字软件协会(Interactive Digital Software Association
  • 钠钾氯共转运蛋白钠钾氯共转运蛋白(英语:Na+-K+-2Cl- cotransporter、NKCC、Na +-K+-2Cl-共同转运体)是一帮助钠、钾、氯离子进行主动运输进出细胞的蛋白质。 此转运膜蛋白有两种变化或等形(is
  • 磷酸银磷酸银,或正磷酸银,原磷酸银,是对光敏感的,黄色的,不溶于水的化合物,由银和磷酸根离子组成,化学式为Ag3PO4或Ag3O4P 磷酸银作为一种黄色沉淀,可由可溶性银化合物(如硝酸银)与可溶性磷
  • 泡泡 (早安少女组。单曲)“泡泡”(シャボン玉)是日本的女子偶像组合“早安少女组。”的第19张单曲。于2003年7月30日由zetima发售。
  • 安德里亚·德沃金安德里亚·丽塔·德沃金(英语:Andrea Rita Dworkin,1949年9月26日-2005年4月9日)是美国基进女性主义者,以她对色情的观点著称,认为色情与强暴和其他针对妇女的暴力密切相关。除了这