gpt4 book ai didi

function - 如何确定 Haxe 中函数接受的参数数量?

转载 作者:行者123 更新时间:2023-12-03 06:36:54 25 4
gpt4 key购买 nike

如何确定 Haxe 中函数接受的参数数量?

我查看了 ReflectType API 没有成功。在 AS3JavaScript ,你可以执行Function#length。类似的反射能力适用于大多数(如果不是全部)其他 Haxe 目标。结合 Haxe 的详细类型系统,必须有一种方法来确定我忽略的函数参数数量。

最佳答案

我最终选择了宏观路线,这就是我的想法。

import haxe.macro.Context;
import haxe.macro.Type;
import haxe.macro.Expr;

class Main {
static function main() {
function test1(a, b, c) {}
function test2() {}
trace(numberOfArgs(test1)); // 3
trace(numberOfArgs(test2)); // 0
trace(numberOfArgs(function test3(a, b) {})); // 2
trace(numberOfArgs('test')); // null
}

macro static function numberOfArgs(f:Expr):ExprOf<Null<Int>> {
var fType:Type = Context.typeof(f);
if (Reflect.hasField(fType, 'args')) {
var fArgs:Array<Dynamic> = Reflect.field(fType, 'args');
return macro $v{fArgs[0].length};
} else {
return macro null;
}
}
}

关于function - 如何确定 Haxe 中函数接受的参数数量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31890828/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com