我有一个复杂的功能。我打算在其中发送一个函数。
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
进行调用。这可能吗?
答案 0 :(得分: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));