AI写作智能体 自主规划任务,支持联网查询和网页读取,多模态高效创作各类分析报告、商业计划、营销方案、教学内容等。 广告
# 名字空间 名字空间组织、归类、标识一组具名对象的名字,是模块化编程的重要基础什么是名字空间 名字空间组织、归类、标识一组具名对象的名字,是模块化编程的重要基础。 在名字空间内部定义的对象名字由名字空间管理。 引用外部名字空间的名字时需要在对象名字前添加名字空间前缀。 不同的名字空间中可以有相同的名字而互不干扰,有效的避免了名字污染。 一个名字空间可以包含另一个名字空间,名字之间使用成员操作符“.”连接,称为名字空间路径。 定义名字空间 使用 namespace 关键字定义名字空间。 如果一个不存在的变量首次被赋值(var语句声明的局部变量除外),则会自动加入到当前名字空间。 请参考:赋值语句 定义名字空间语法: ~~~ namespace 名字空间名字{ //名字空间内部代码 } ~~~ 也可以使用begin end定义语句块,如下: ~~~ namespace 名字空间名字 begin //名字空间内部代码 end; ~~~ 名字空间可以嵌套,默认的每一个namespace语句总是在当前名字空间内部创建新的名字空间,如下: ~~~ namespace 名字空间名字{ namespace 内部名字空间{ //名字空间内部代码 } } 名字空间名字.内部名字空间.成员 = 123 ~~~ 名字空间也可以省略语句块标记,表示名字空间作用域直至该代码文件结束: ~~~ namespace 名字空间名字 ~~~ //名字空间内部代码,直到文件结束 如果在名字空间前面加上**两个连续的小圆点“..”作为前缀**,则该名字空间为全局名字,如下: ~~~ namespace 名字空间名字{ namespace ..全局名字空间{ //名字空间内部代码 } } 全局名字空间.成员 = 123 ~~~ 示例如下: ~~~ io.open(); //打开控制台窗口 namespace 中国.北京{ 温度 = 29; 天气 = "晴"; 报告气象 = function(){ //访问全局名字空间要加上..前缀 ..io.open(); ..io.print("温度",温度) ..io.print("天气",天气) } } 中国.北京.报告气象() ~~~ 名字空间其实也是一个普通的table对象。 访问非当前名字空间的成员变量,可以加上有效的名字空间前缀.访问顶层名字空间要使用..操作符。 * * * * * :-: **global,self 关键字** **1、global** global为默认的全局名字空间,当aardio代码文件加载时,默认都运行在global名字空间。 **2、self** self表示当前名字空间。 import语句 import语句可以将外部名字空间导入当前名字空间(并且总是会同时导入全局名字空间),如下: ~~~ namespace 中国.北京{ ..io.open(); //注意访问全局名字空间需要添加..前缀 import io; //导入到当前名字空间 io.print("io已经在当前名字空间了") } ~~~ 如果是不存在的名字空间,import会尝试导入库文件。 aardio库文件的物理路径与名字空间路径完全一致,对于模块化编程提供良好的支持。 注意:名字空间不能是单个下划线(可以包含下划线)! 请参考import用法 * * * * * 以上内容复制于官方手册,后期补充其他材料