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

不少语言里面都有变长参数语法的支持,但方式方法各自不同,比如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));

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值