Jest to z pewnością możliwe, a to wzór stosowany w bibliotece standardowej, zwłaszcza w klasie Lambda:
class Test {
static function main(){
var arr = [0,1,2,3,4,5,6,7,8,9,10];
var newArr = Lambda.filter(arr, function (num) {
return num % 2 == 0;
});
for (i in newArr)
{
trace (i);
}
}
}
(Zobacz http://try.haxe.org/#C9dF3)
Aby zdefiniować własne metody, które mają funkcje Parametry użyć składni (param1Type)->(param2Type)->(returnType)
:
function test1(myFn:String->Void) { myFn("hi"); }
test1(function (str) { trace(str); });
function test2(myFn:String->String) { var newStr = myFn("hi"); }
test2(function (str) { return str.toUpperCase(); });
function test3(myFn:Int->String->Array<Int>->Void) { myFn(3, "Jason", [1,2,3,4]); }
test3(function(num:Int, name:String, items:Array<Int>) { ... });
nie wiem o haXe: ale w 'b (a)' ty podstawione nazwę funkcji z jej definicji. Są prawie zawsze takie same. Mówię prawie zawsze, ponieważ jeśli haxe próbuje zrobić coś śmiesznego dla argumentu funkcji (powiedzmy "a" ma parametr i po przekazaniu go jako argumentu semantyka haxe wymusiła sprowadzenie argumentu do jakiejś normalnej formy ... może się wydawać, że nie ma żadnej różnicy – user1666959
@ user1666959 Nie wszystkie języki pozwalają przekazywać funkcje jako argumenty - Java nie pozwala na przykład przekazywać funkcji jako argumentów. w Haxe, czy nie jest to możliwe? –