haXe学习笔记:写一个支持类型参数的静态方法
来源:互联网 发布:如何正确对待网络暴力 编辑:程序博客网 时间:2024/05/21 09:40
在Java中,泛型是1.5版本加入的新语言特性,因此只要你不在乎警告或压制了警告,就可以无视它。但在haXe里,类型参数是你无法避免的东西,因为Array<T>你是无论如何也得用的。还好,简单使用起来也很容易,没什么不容易理解的地方。
这里说说我们自己怎么编写支持类型参数的类和方法。
支持类型参数的类有很多例子,比如haXe源码里Array<T>的实现,这里摘录代码片段如下:
class Array<T> {
function new() : Void;
function concat( a : Array<T> ) : Array<T>;
function join( sep : String ) : String;
function pop() : Null<T>;
function push(x : T) : Int;
...
}
很简单,只要你在类名后面加上类型参数<T>,编译器就知道后面的成员方法或类属性中的T就是一个类型的占位符,比如上面的concat, pop和push方法中,都引用了这个T作为类型占位符。
这是实例方法,但是静态方法中如果有类型参数,则不能这么写,见下面的例子:
public static function reverseIterator<T>(iter: Iterator<T>) : Iterator<T> {
var all: Array<T> = [];
for (i in iter) {
all.push(i);
}
all.reverse();
return all.iterator();
}
大家可以看到,关键就是在声明中,方法名的后面要加上类型占位符,也就是"<T>",否则的话,编译器不知道后面参数和返回值里的T表示类型参数。
上面例子是一个反向迭代器的简单实现,也算是稍稍弥补下haXe中for语法的缺憾吧,比如你如果想逆向遍历0~10,可以用下面的代码:
for (i in reverseIterator(0...10)) {
trace(i);
}
// 输出: 9<换行>8<换行>7<换行>6<换行>5<换行>4<换行>3<换行>2<换行>1<换行>0<换行>
不过这个方法里面要创建数组,效率不太高,图方便可以用一下,呵呵。
- haXe学习笔记:写一个支持类型参数的静态方法
- haXe学习笔记:xml的解析
- haXe学习笔记:关于NME中的drawTiles方法
- Haxe学习笔记(一) Haxe:一次编码全平台编译的神话
- HaXe学习笔记:HaXe语言和其它编程语言的区别
- 学习编写Haxe的HelloWorld
- [OC学习笔记]NSObject支持的一些处理动态类型的方法
- switch参数支持的类型
- java学习笔记(四)----对象、数组作为参数传递,静态变量、静态方法的使用,内部类,使用文档注释
- 一个完整的haXe游戏例子
- 我的java学习笔记(11)关于装箱、参数可变方法和枚举类型
- Spring Boot系列九 spring mvc的@RequestMapping支持的方法参数类型和返回类型
- 如何编写写一个带多参数的方法
- python的类方法为什么要写一个self参数
- 写一个方法,参数接收一个String类型的对象,最终可以把这个字符串参数中出现过的每一个字母打印出来 例如: "wwqweqdasdafdsfdsferer" 将来方法接收这个参数后会打印:
- 算法学习笔记5-递归方法写一个全排列
- C#学习笔记之——写一个能算出今天是今年第几天的方法
- 21. SpringMVC_如何确定目标方法POJO类型参数(无写笔记)
- hibernate查询案例
- Hibernate的多表关联问题
- 游戏程序员修炼之道
- haXe开发备忘:如何使用变长参数
- android recovery模式及ROM制作
- haXe学习笔记:写一个支持类型参数的静态方法
- Sencha touch 与PHP 怎么进行json 数据解析
- 详解开发iPhone应用程序的12个步骤
- 屏幕分辨率及对应名称大全
- 用haXe+NME实现水果忍者的刀光效果,支持多点触摸,Flash10, Android通用
- java 接口
- Binary Tree Level Order Traversal II
- haXe学习笔记:关于NME中的drawTiles方法
- Android版本与Linux内核版本的关系