跳到主要内容
版本:release

导入声明

语法

  • export? import 脚本路径1 (as 标识符)? ;

注释:

  1. 脚本路径的语法:

    • "字符串字面量"
    • .? 标识符 (. 标识符)*

描述

在 GS 中,可以使用指向脚本路径的字面量 调用 其他脚本中的函数,为了简化这一过程, 可以使用 import 声明将其他脚本的路径引入成为一个常量:

import a.b.c;

c.foo(); // 等效于 "/a/b/c.gs".foo();
writeln(c); // 输出 /a/b/c.gs,即脚本对应的程序路径

如上所示,import 声明将一个脚本导入后,引入了一个与脚本文件名同名(此处为 c)的常量,此常量是一个字符串,字符串内容为脚本的路径(此处为 "/a/b/c.gs")。

可以通过 索引 语法访问脚本中定义的常量,或是调用脚本中定义的函数。

如果一个脚本存在两个或以上的 import 声明导入了同名的脚本,导入引入的常量将有二义性,使用会导致编译错误:

import a.b.c;
import x.y.c;

// c.foo(); // 错误,c 常量存在二义性

为了规避此问题,可以使用 as 关键字为导入的脚本指定一个别名:

导入的别名

在导入脚本时,可以使用 as 关键字额外引入一个常量,该常量亦指示导入脚本的路径:

import a.b.c as my_c;

my_c.foo(); // 正确,调用 a.b.c.gs 中的 foo 函数
writeln(my_c); // 输出 /a/b/c.gs,即脚本对应的程序路径

路径

导入脚本时,使用与 组件声明 相同的路径规则。

导出的导入

如果在 import 声明前使用 export 关键字,则表示将该导入重新导出,使得其他脚本在导入当前脚本时,也能访问该导入:

// a.gs
export import b.c;
import d;

// b.gs
import a;

c.foo(); // 正确,能访问 b.c 中的 foo 函数
// d.foo(); // 错误,不能访问 d.gs 中的 foo 函数

使用 as 声明的别名也会被一并导出:

// a.gs
export import b.c as my_c;

// b.gs
import a;
my_c.foo(); // 正确,能访问 b.c 中的 foo 函数