作用域

✍ dations ◷ 2025-09-18 20:24:21 #计算机编程

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

相关

  • 赫胥黎安德鲁·赫胥黎爵士,OM,FRS(Sir Andrew Fielding Huxley,1917年11月22日-2012年5月30日)是一位生理学家与生物物理学家,与艾伦·劳埃德·霍奇金共同研究神经的动作电位,两人因此与研
  • 船政学堂船政学堂,源自1866年(清同治五年)清朝船政大臣沈葆祯于福建福州马尾港所设的海军学院,又称“福建船政学堂”、“福州船政学堂”或“马尾水师学堂”。船政学堂最初称“求是堂艺局
  • 占领东欧的广大领土东进(德语:Drang nach Osten),是十九世纪德国大日耳曼主义创造的一个术语,变成了德国的民族主义的座右铭。他们以条顿骑士团向东扩张为例子,认为德国应向东欧扩大生存空间。这个观
  • 联合国反腐败公约《联合国反腐败公约》是联合国历史上通过的首个用于打击国际腐败犯罪的法律文件。反腐公约于2003年12月9日至11日在墨西哥南部城市梅里达举行的联合国国际反腐败高级别政治
  • 骑士龙战队龙装者 THE MOVIE 时空穿梭!恐龙大恐慌!!《骑士龙战队龙装者THE MOVIE时空穿梭!恐龙大恐慌!!》(日语:騎士竜戦隊リュウソウジャー THE MOVIE タイムスリップ!恐竜パニック!!),是日本特摄节目《骑士龙战队龙装者》于2019年
  • 材是宋代《营造法式》中建筑构件的长度的标准。《营造法式》卷四《大木作制度一》开章明义:“凡构屋之制,皆以材为祖”。宋代官式建筑所用的木材规格,按木材横断面的大小,分为八
  • 闪存文件系统闪存文件系统(英语:Flash file system),是一种为了在闪存设备上存储数据而设计的文件系统,如JFFS2与YAFFS等。随着移动设备的日渐增加,闪存的存储能力增加以及价格下降,这类型的文
  • 心叶小檗心叶小檗(学名:)为小檗科小檗属下的一个种。
  • 刘宇 (明朝)刘宇(1439年-1508),字至大,河南钧州(今禹州市)人,明朝政治人物,成化进士。正德初依附权阉刘瑾,官吏部尚书、文渊阁大学士。为官暴虐贪腐。刘瑾伏诛,革职为民。成化八年(1472年),刘宇登进士
  • 波纳孔波纳孔(Bonnacon、Bonaconn)是栖息在亚洲沙漠或低木地的传说上的牛形动物,会排放灼热且恶臭的粪便保护自己。根据古罗马的博物学家老普林尼的‘博物志’,波纳孔的外型是长著马鬃