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));
而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));
相关文章推荐
- 如何使用Pycharm进行Python开发
- C语言中如何使用宏 包括单双井号 可变参数
- 如何使用XML格式的参数在SQL server的存贮过程中。
- Intent的参数设置与使用示例 ,实际开发中不可少
- 如何在 Eclipse 中使用插件构建 PHP 开发环境
- Coding 如何使用 Coding 开发 Coding
- [转]如何使用EditPlus配置程序开发环境(NASM)
- 如何使用ASP.NET开发基于推技术的聊天室?
- Objective-c开发教程--如何在项目中使用AFNetworking
- 如何使用 Xcode Targets 管理开发和生产版本?
- JAVA的可变参数"..."如何使用
- FleaPHP 开发指南 - 8. 如何使用 RBAC 组件实现访问控制
- iOS开发:如何使用iOS手势UIGestureRecognizer
- 如何在Linux使用Eclipse + CDT开发C/C++程序?
- android开发如何使用SQLite数据库教程
- [LED]LCD背光设置为PWM模式的时候,config_data里面的参数如何使用
- 【Android游戏开发二十一】Android os设备谎言分辨率的解决方案!以及简单阐述游戏引擎如何使用!
- [hsp学习笔记]如何使用myEclipse进行hibernate开发(第十二讲)
- 如何正确的使用CFile::Open中的参数?
- IPhone 网络开发之如何使用NSURLConnection(一)