作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个复杂的函数。我计划向其中发送一个函数。
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的unityscript,带有#pragma strict,所以我必须指明参数类型。)
所以我考虑预先应用这些枚举参数,将其放入无参数函数并将其发送给ComplexFunction
调用。这可能吗?
最佳答案
在纯 JavaScript 中,您可以将参数绑定(bind)到函数,如下所示:
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
在你的情况下,我会用 FunctionA
调用 ComplexFunction
,如下所示:
ComplexFunction(FunctionA.bind(null, AValueFromEnumX));
关于unity-game-engine - 将参数预先应用到 unityscript 函数并将其用作发送到另一个函数的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17107527/
我是一名优秀的程序员,十分优秀!