Преглед изворни кода

[php] back to Haxe loops in `Array.map` and `Array.filter` to avoid allocation of anonymous functions

Alexander Kuzmenko пре 6 година
родитељ
комит
91b3002c8f
1 измењених фајлова са 11 додато и 7 уклоњено
  1. 11 7
      std/php/_std/Array.hx

+ 11 - 7
std/php/_std/Array.hx

@@ -43,11 +43,13 @@ final class Array<T> implements ArrayAccess<Int,T> {
 
 	public inline function filter(f:T->Bool):Array<T> {
 		var result = Syntax.arrayDecl();
-		Syntax.foreach(arr, function(_, value:T) {
-			if(f(value)) {
-				result.push(value);
+		var i = 0;
+		while(i < length) {
+			if(f(arr[i])) {
+				result.push(arr[i]);
 			}
-		});
+			i++;
+		}
 		return wrap(result);
 	}
 
@@ -101,9 +103,11 @@ final class Array<T> implements ArrayAccess<Int,T> {
 
 	public inline function map<S>(f:T->S):Array<S> {
 		var result = Syntax.arrayDecl();
-		Syntax.foreach(arr, function(_, value:T) {
-			result.push(f(value));
-		});
+		var i = 0;
+		while(i < length) {
+			result.push(f(arr[i]));
+			i++;
+		}
 		return wrap(result);
 	}