您的位置:首页 > 其它

haXe开发备忘:如何使用变长参数

2012-12-10 00:08 423 查看
不少语言里面都有变长参数语法的支持,但方式方法各自不同,比如java是用迭代器,javascript是用arguments变量,AS没研究过,大概跟javascript比较像。

而haXe则是另一种方式,今天工作中恰好要写找最大值最小值的变长参数方法,这里就共享出来。

class Utils {

public static var max: Dynamic;

public static var min: Dynamic;

private static function __init__() : Void {

max = Reflect.makeVarArgs(__max);

min = Reflect.makeVarArgs(__min);

}

private static function __max(args: Array<Dynamic>) : Dynamic {

var m: Dynamic = Math.NEGATIVE_INFINITY;

for (a in args) {

if (a > m) m = a;

}

return m;

}

private static function __min(args: Array<Dynamic>) : Dynamic {

var m: Dynamic = Math.POSITIVE_INFINITY;

for (a in args) {

if (a < m) m = a;

}

return m;

}

}

说明一下:

* 在haXe里面没有arguments这个默认变量,而是需要用Reflect.makeVarArgs()这个函数把一个普通方法转换成变长参数方法

* 因为是静态函数,因此没法在构造函数里做转换,这里写了个__init__()方法,这是haXe里的静态初始化函数,可不是我自己瞎起的名字

* 被转换的方法必须是Array<Dynamic> -> Dynamic类型的

转换完之后的变长参数方法max和min就可以如下语法正常使用了:

trace("max=" + Utils.max(1, 2, 5.2, -1.3, 0, 0.8) + ",min=" + Utils.min(1, 2, 5.2, -1.3, 0, 0.8));
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: