在HAXE編程語言,是否有可能(在JavaScript樣?)傳遞函數作爲參數傳遞函數作爲參數在HAXE
例如,在HAXE認爲是有效的下面的代碼?
function a(){
trace("This function is being used as a parameter!");
}
function b(theFunction){
theFunction();
}
b(a); //is this equivalent to a(); ?
在HAXE編程語言,是否有可能(在JavaScript樣?)傳遞函數作爲參數傳遞函數作爲參數在HAXE
例如,在HAXE認爲是有效的下面的代碼?
function a(){
trace("This function is being used as a parameter!");
}
function b(theFunction){
theFunction();
}
b(a); //is this equivalent to a(); ?
這絕對是可能的,而且是在標準庫使用的模式,尤其是在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);
}
}
}
(參見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>) { ... });
看到和自己試着請:)
謝謝 - 我忘記了可以在線測試Haxe代碼。:) –
另一種測試事情的快速方法是編譯爲neko ...您只需使用「haxe -x MyTestClass.hx「,它會生成」MyTestClass.hx.n「並一次爲你運行。真的很方便快速檢查Haxe中的某些工作。 –
我不知道haXe的:但在'B(A)'你取代其定義函數的名稱。這些幾乎都是一樣的。我幾乎總是這樣說,因爲如果haxe試圖對函數參數做一些有趣的事情(比如'a'有一個參數,並且在將它作爲參數傳遞時,haxe的語義強制參數被簡化爲某種正常形式......你因爲它代表着我無法想象的任何區別 – user1666959
@ user1666959並非所有語言都允許將函數作爲參數傳遞 - 例如,Java不允許函數作爲參數傳遞。是否有可能在Haxe中,還是不可能? –