import语句

库、名字空间体系使aardio程序能更好的支持的模块化编程。请参考:名字空间

导入库

import语句将一个外部名字空间导入到当前名字空间,如果该名字空间不存在,aardio会尝试从库中导入。
import保证不会重复加载相同的库。保证外部库内的代码在一个线程中仅运行一次。

例如:

import a.b.c //将外部库a.b.c导入当前名字空间

aardio的库有三种:


在发布exe文件时,编译器将会自动分析程序中引用到的库并加入目标程序中。并丢弃未引用的库。

详解import导入库的过程

import导入库时查找顺序为“内核库->标准库->用户库”。
外部库文件的物理路径与名字空间路径保持一致(将物理路径中的斜杠替换为圆点就是名字空间路径)。

我们以下面的import语句为例详解导入库的过程:

import time.ole //将外部库time.ole导入当前名字空间


1、查询库缓存

已导入的库会直接加载到当前名字空间,不会重复导入相同的库,否则继续下面的过程。

2、查询内核库

如果内核库中存在该库,导入库,否则继续下面的过程。

3、查找编译嵌入EXE的库文件

aardio会优先加载编译发布EXE时嵌入EXE文件的库模块。

4、查询标准库

如果仍然没有找到库。在启动当前进程的EXE文件根目录下的的lib目录下查询库文件,从根目录逐渐向下层子目录开始搜索,查找顺序如下(按查找顺序先后排列):

~\lib\time.ole.aardio
~\lib\time\ole.aardio
~\lib\time\ole\_.aardio

如果找到aardio代码文件或编译后的二进制aardio文件,加载并运行,并将文件路径作为参数传递给目标文件。


5、查询用户库

如果仍然没有找到,按第三步的过程,在当前工程目录\lib目录,或启动文件所在目录\lib目录下查找用户库, 查找顺序如下(按查找顺序先后排列):

\lib\time.ole.aardio
\lib\time\ole.aardio
\lib\time\ole\_.aardio

如果找到aardio代码文件或编译后的二进制aardio文件,加载并运行,并将文件路径作为参数传递给目标文件。


注意在aardio开发环境中 "~\lib\" 表示aardio.exe所在目录下的标准 库,而 "\lib\"表示虚拟根目录下的用户库。对于一个工程来说工程目录就是虚拟根目录,对于一个在工程之外单独运行的aardio文件 - 文件所在的目录就是虚拟根目录。对于发布后的EXE文件来说,"\lib\"与"~\lib\"默认都是指EXE文件启动目录,在创建线程、协程时 - 可以在参数中改变虚拟根目录


6、查询扩展库

如果当前是运行在aardio开发环境中,仍然没有找到匹配的库文件,aardio会检查扩展库列表并安装扩展库。

6、检查库是否加载成功

最后aardio检查目标文件是否成功运行,
目标文件是否创建了新的名字空间全局名字空间..time.ole。
如果导入名字空间成功,则导入当前名字空间( self 名字空间 )。