函数的使用
函数
-
函数声明
function 一个函数();如果函数没有提前声明,那么它会在实现的位置完成声明。
-
函数实现
function 一个函数() {// 代码块} -
函数参数
函数可以有一个或多个参数,参数之间用逗号隔开。函数的参数和返回值都是运行时值类型变量(EUDVariable)。
function 打印两个变量值(变量1, 变量2) {println("{}, {}", 变量1, 变量2);} -
函数返回值
一个函数可以在调用后返回一个或多个值,多个返回值用逗号隔开。
function 交换(值1, 值2) {return 值2, 值1;} -
参数和返回值类型
函数的参数和返回值可以指定类型。
在参数名后加上冒号并写上类型名称,即可指定参数类型;运行时会将参数变量的值(作为编号或指针)包装成指定类型。
在函数声明的参数列表括号后加上冒号并写上类型名称,即可指定返回值类型;运行时会将返回变量的值(作为编号或指针)包装成指定类型。function 创建一个新单位(player : TrgPlayer, ut : TrgUnit, loc : TrgLocation) : CUnit, TrgString {const cu = CUnit.from_read(EPD(0x628438));if (cu == 0) {return 0, $T("无法再创建单位");}CreateUnit(1, ut, loc, player);if ( Memory(0x628438, Exactly, cu.ptr) ) {return 0, $T("CreateUnit 没能成功创建单位,可能是参数给错或是出口被堵住了");}return cu, $T("成功");}function onPluginStart() {const cu, err = 创建一个新单位(P1, $U("Terran Marine"), $L("Location 1"));if (cu != 0) {cu.cgive(P8);cu.set_color(P8);} else {DisplayTextAll(err);}} -
函数调用
一个函数(); // 直接调用一个没有参数的函数var a = 2;var b = 3;a, b = 交换(a, b); // 传入参数调用一个函数并获取其返回值打印两个变量值(a, b); // 传入参数调用一个函数 -
多个返回值的说明
函数返回多个值时,实际上返回的是一个编译期 tuple。当不需要获取所有返回值时,可以用选择语法
[[]]获取返回 tuple 中的一个或多个值(下标从 0 开始)。
tuple 是编译期类型,不是运行时数据结构。function 有多个返回值的函数() {return 1, 2, 3, 4, 5;}const r1 = 有多个返回值的函数()[[0]];const r4, r3 = 有多个返回值的函数()[[4, 3]];const r1, r2, r3, r4, r5 = 有多个返回值的函数(); // 当有足够的左值接收多个返回值时,tuple 会自动解包