3

我有一个复杂的功能。我计划向其中发送一个功能。

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??? )

(这是Unity的带有#pragma strict的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 回答