3

私は1つの複雑な機能を持っています。私はそれに機能を送ることを計画しました。

function ComplexFunction( customFunction : function)
{
    //Complex things
    customFunction();
    //Complex things
}

しかし、私が送信する予定の関数には異なる署名があります

function FunctionA ( enumParameter : EnumX )
function FunctionB ( enumParameter : EnumY )
function FunctionC ( enumParameter : EnumZ )

どのタイプが送信されるかわからないため、これはオプションではありません。

function ComplexFunction( customFunction : function , enumForCustomFunction : Enum??? )

(これは #pragma strict を使用した Unity の unityscript であるため、パラメーターの型を指定する必要があります。)

したがって、これらの列挙型パラメーターを事前に適用し、パラメーターのない関数にして、それComplexFunctionを呼び出して送信することを考えています。これは可能ですか?

4

1 に答える 1

1

プレーンな JavaScript では、次のようにパラメーターを関数にバインドできます。

var multiply = function(x,y) { return x*y };
var doubleIt = multiply.bind(null, 2);

したがって、今呼び出すとdoubleIt(3)が返されます6。(nullは関数のコンテキストを設定します。この場合はそれを気にしないので、 を使用しますnull)。このトピックの詳細については、https ://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/bind をご覧ください。


あなたの場合、私は次のように呼び出しComplexFunctionますFunctionA

ComplexFunction(FunctionA.bind(null, AValueFromEnumX));
于 2013-06-14T11:51:47.967 に答える