深入理解后期绑定与缓存机制
1. 绑定的基本概念
绑定,也常被称为名称绑定,是指将名称与它们所引用的目标关联起来。在代码示例中,像 String 是类名, bob 和 lowercaseBob 是变量名, ToLower 是方法名。
绑定方式可以从两个方面进行分类:作用域和时间。从作用域角度来看,绑定可以是词法(静态)的或动态的;从时间角度来看,绑定可以是早期(编译时)的或后期(运行时)的。
| 作用域 \ 时间 | 编译时(早期) | 运行时(后期) |
| — | — | — |
| 词法(静态) | C# | IronPython |
| 动态 | X | Lisp |
词法作用域和时间这两个方面在很大程度上是正交的,但并非完全不相关。词法作用域规则可以在编译时或运行时应用来绑定名称,结果可能相同。然而,如果一种语言使用动态作用域规则进行名称绑定,由于其动态性质,在应用这些规则绑定时需要一些运行时信息,因此不可能设计一个在编译时应用这些规则的编译器,这就是表格中标记“X”的原因。
2. 调用点与早期绑定
调用点是代码中调用方法的位置。以以下 C# 代码为例:
String bob = "Bob";
String lowercaseBob = bob.ToLower();
第二行代码中的方法调用就是一个调用点。在静态语言如 C# 中,编译器负责名称绑定。在这
超级会员免费看
订阅专栏 解锁全文
13

被折叠的 条评论
为什么被折叠?



