Previous: Search paths, Up: Environments and variable lookup



1.2.2 命名空间

命名空间是和包相关的环境(当然,基础包是特定的而且会被单独考虑)。 拥有命名空间的包 pkg定义了环境 namespace:pkgpackage:pkg:正是 package:pkg 可以被绑定(attach)并且形成 搜索路径的一部分。

R 代码在包里面定义的对象是拥有 namespace:pkg 环境的符号。 package:pkg 环境拥有从 namespace:pkg 环境(输出) 选定的符号。该环境的闭包是一个用于放置来自其它命名空间的外在输入, 而另外一个环境就是基础命名空间。(因此,在命名空间环境里面的输入物 的映像是通过环境树(environment tree)创建的)。 基础命名空间的闭包是全局环境,所以从一个包的命名空间开始的 搜索通过输入(显示的或者暗含的)进入标准的`搜索路径'的。

基础命名空间环境 R_BaseNamespace 是另外 一个特别定义的ENVSXP。它和基础环境 R_BaseEnv 是同一个东西,除了它的闭包是一个全局环境而不是空环境: 内置代码把查找从自身框架转向全局的符号表。