作用域

✍ dations ◷ 2025-11-24 02:02:54 #计算机编程

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

相关

  • 卵子细胞卵子是雌性动物的生殖细胞。卵细胞(由次级卵母细胞产生)成熟后成为卵子。在哺乳动物上,卵子是由卵巢所产生的。所有哺乳类在出生时,卵巢内已经有未成熟的卵子存在,而且在出生后卵
  • 免疫功能低下免疫缺陷(英语:immunodeficiency)是指免疫系统抵抗传染病的能力失常或欠缺。免疫缺陷还可能降低肿瘤免疫监视功能。免疫缺陷多为继发性(secondary)免疫缺陷,不过也有些人生来就有
  • 卡曼塔瓦库·卡曼(阿拉伯语:توكل كرمان‎,1979年2月7日-),也门政治家,是也门政党Al-Islah的高级成员,2005年创立无锁链女记者组织并任主席。2011年10月7日,卡曼、埃伦·约翰逊·
  • 昔德兰群岛设得兰(英语:Shetland,/ˈʃɛtlənd/;苏格兰盖尔语:Sealtainn;古诺斯语:Hjaltland)是大不列颠岛以北的群岛,英国领土的最北端,距离丹麦自治领地法罗群岛280公里(170哩)。它也是苏格兰32
  • 湿婆军湿婆军(शिव सेना,Śīv Senā)是印度的一个极右翼民族主义政党,虽然于华人地区多译为“湿婆军”或“湿婆神军党”,然而Śīv Senā的Śīv实际上指的是马拉塔帝国的希瓦吉
  • 勒姆尼切卢乡 (布泽乌县)坐标:45°17′N 27°32′E / 45.283°N 27.533°E / 45.283; 27.533勒姆尼切卢乡(罗马尼亚语:Comuna Râmnicelu, Buzău),是罗马尼亚的乡份,位于该国东南部,由布泽乌县负责管辖,面
  • 芹属芹属(学名:)是伞形目伞形科的一属,高至一米,结白色小花。本属至少有16个受承认的物种:另有一个已命名的杂交种:此外,细叶旱芹()曾被归类于本属,但现已归类为独立的细叶旱芹属()。
  • 武田信绳武田信绳(1471年-1507年3月27日)是日本战国时代武将。甲斐守护大名。武田信虎之父、武田信玄之祖父、武田胜赖的曾祖父。甲斐源氏宗家武田氏第17代当主。武田信绳是第16代当主
  • 秘密 (2013年电视剧)《秘密》(韩语:비밀)为韩国KBS自2013年9月25日起播出的水木迷你连续剧,讲述不相信爱情的男人与被爱情背叛的女人之间的故事。此剧是崔浩哲作家在2012年KBS迷你剧剧本征集获得优
  • 中华水韭中华水韭(学名:),又名华水韭,多年生沼泽地植物,植株高约15到30厘米。因其形状像韭菜又多生于沼泽而得名。茎短,肉质,块状,宽度约0.5到1.5厘米。块茎由两道三瓣组成,基部生根。叶细长,聚