Передача функции в качестве параметра в Haxe

на языке программирования Haxe можно ли передать функцию в качестве параметра (например, в JavaScript?)

например, считается ли следующий код допустимым в Haxe?

function a(){
    trace("This function is being used as a parameter!");
}

function b(theFunction){
    theFunction();
}

b(a); //is this equivalent to a(); ?

2 ответов


Это, безусловно, возможно, и это шаблон, используемый в стандартной библиотеке, особенно в лямда - класс:

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);
    }
  }
}

(см. http://try.haxe.org/#C9dF3)

определять свои собственные методы, которые принимают функции в качестве параметров вы используете (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>) { ... });

смотрите и попробуйте сами пожалуйста:)

http://try.haxe.org/#CFBb3