函数值函数类型的 flex (ActionScript3) 语法是什么?
-
09-06-2019 - |
题
在如下代码中为比较函数生成器声明类型的语法是什么?
var colName:String = ""; // actually assigned in a loop
gc.sortCompareFunction = function() : ??WHAT_GOES_HERE??
{
var tmp:String = colName;
return function(a:Object,b:Object):int { return compareGeneral(a,b,tmp); };
}();
解决方案
“函数”不是一种数据类型吗?
其他提示
为了理解数据类型是什么,我们必须知道返回的预期结果是什么。我需要查看compareGeneral 的代码块,但我仍然不相信这会有帮助。您有两个带有相同函数“gc.sortCompareFunction”的返回,我认为这是不正确的,因为返回获取一个值,然后充当中断命令,这意味着同一功能块中的其余任何内容都将被忽略。问题是我不知道哪个返回是预期的返回,我也不知道flash知道。您可以使用 * 作为数据类型,但这只能在特定情况下使用。在这种情况下,我相信您只需要一个返回值,该返回值仅返回compareGeneral 的值。
现在,如果这是一个比较生成器,它实际上应该返回布尔值 TRUE 或 FALSE,或者 int 0 或 1,让我们使用前者。我也相信我们可以少用一个函数。由于我没有看到您的所有代码,并且我不确定您想要完成什么,因此以下内容是假设的。
function compareGeneral(a:object,b:object):Boolean { //Check some property associated to each object for likeness. if(a.someAssignedPropery == b.someAssignedPropery) { return true; } return false; } var objA:Object = new Object(); objA.someAssignedProperty = "AS3"; objB.someAssignedProperty = "AS3"; compareGeneral(objA,objB);
在本例中,compareGeneral(objA,objB);返回 true,尽管我们还没有用它做任何有用的事情。这是您可以使用它的一种方法。请记住,它返回 true 或 false 值,因此我们可以将其视为变量。
if(compareGeneral(objA,objB)) //same as if(compareGeneral(objA,objB)) == true) { trace("You have found a match!"); //Here you can call some other function or set a variable or whatever you require functionality wise based on a match being found. } else { trace("No match could be found!"); }
我希望这能够帮助您理解数据类型和返回值。我不知道你对 tmp 做了什么,但通常返回值的函数只处理这一件事,因此最好将一个事物与另一个事物进行比较,这就是调用的范围。无论您需要 tmp 的任何功能,都可以放入其自己的函数或方法中,并在需要时调用。
不隶属于 StackOverflow