Browse Source

also use iterator class on java

Dan Korostelev 11 years ago
parent
commit
a835bfe8e3
1 changed files with 20 additions and 8 deletions
  1. 20 8
      std/java/_std/Array.hx

+ 20 - 8
std/java/_std/Array.hx

@@ -402,15 +402,9 @@ import java.NativeArray;
 		return ofNative(newarr);
 		return ofNative(newarr);
 	}
 	}
 
 
-	public function iterator() : Iterator<T>
+	public inline function iterator() : Iterator<T>
 	{
 	{
-		var i = 0;
-		var len = length;
-		return
-		{
-			hasNext:function() return i < len,
-			next:function() return __a[i++]
-		};
+		return new ArrayIterator<T>(this);
 	}
 	}
 
 
 	public function map<S>( f : T -> S ) : Array<S> {
 	public function map<S>( f : T -> S ) : Array<S> {
@@ -467,3 +461,21 @@ import java.NativeArray;
 		return __a[idx] = val;
 		return __a[idx] = val;
 	}
 	}
 }
 }
+
+@:final
+private class ArrayIterator<T>
+{
+	var arr:Array<T>;
+	var len:Int;
+	var i:Int;
+
+	public inline function new(a:Array<T>)
+	{
+		arr = a;
+		len = a.length;
+		i = 0;
+	}
+
+	public inline function hasNext():Bool return i < len;
+	public inline function next():T return arr[i++];
+}