进入Swift REPL的一些有趣行为:
1> import var Glibc.M_PI
2> M_PI
$R0: Double = 3.1415926535897931
3> M_E
$R1: Double = 2.7182818284590451
4>
根据language documentation,我执行此导入时只能使用符号M_PI
!
进口声明
导入声明允许您访问在当前文件之外声明的符号。基本表单导入整个模块;它由import关键字后跟模块名称组成:
import module
提供更多详细信息限制导入的符号 - 您可以在模块或子模块中指定特定子模块或特定声明。使用此详细表单时,只有导入的符号(而不是声明它的模块)在当前作用域中可用。
import [import kind] [module].[symbol name]
import [module].[submodule]
但相反,M_E
,sqrt()
,sin()
,log()
和厨房水槽现在在范围内运行。如何防止导入所有其他符号?
奇怪的是,这只发生在Swift控制台中;编译后的Swift代码不会这样做。