10、编程中的命名、作用域与绑定深度解析

本文还有配套的精品资源,点击获取 menu-r.4af5f7ec.gif

编程中的命名、作用域与绑定深度解析

1. 作用域规则基础

在编程里,绑定有效的程序文本区域就是其作用域。多数现代语言中,绑定的作用域是在编译时静态确定的。以 C 语言为例,进入子例程时会引入新的作用域,为局部对象创建绑定,停用被同名局部对象“隐藏”的全局对象绑定。子例程退出时,销毁局部变量的绑定,重新激活被隐藏的全局对象绑定。这些绑定操作看似是运行时操作,实则在编译时就完全确定了绑定有效的程序部分。所以,C 语言是静态作用域(也叫词法作用域)。

而像 APL、Snobol 和早期 Lisp 方言等语言是动态作用域,其绑定依赖于运行时的执行流程。

除了“绑定的作用域”,“作用域”这个词有时也单独使用,非正式地说,作用域是程序中绑定不变(或至少没有销毁)的最大区域,通常是模块、类、子例程或结构化控制流语句的主体,在 C 族语言中用 {...} 花括号界定。

Algol 68 和 Ada 用“详细说明”来指代控制首次进入作用域时声明生效的过程,这涉及绑定的创建,在很多语言中还包括为局部对象分配栈空间和可能的初始值赋值。在 Ada 中,还可能涉及执行错误检查、堆空间分配代码、异常传播和创建并发执行任务等。

程序执行的任何时刻,活动绑定的集合称为当前引用环境,主要由静态或动态作用域规则决定。引用环境通常对应一系列作用域,可按顺序检查以找到给定名称的当前绑定。在某些情况下,引用环境还依赖于所谓的绑定规则,当子例程 S 的引用存储在变量中、作为参数传递给其他子例程或作为函数值返回时,需要确定何时选择 S 的引用环境,主要有深度绑定(引用首次创建时选择)和浅绑定(引用最终使用时选择)两种选项。

2. 静态
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值