函数值函数的类型的flex(ActionScript3)语法是什么?
时间:2020-03-05 18:56:35 来源:igfitidea点击:
在如下代码中为我的比较函数生成器声明类型的语法是什么?
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"的返回,我认为这是不正确的,因为返回获取一个值,然后用作中断命令,这意味着带有相同功能块的其余所有内容都会被忽略。问题是我不知道哪个退货是预期的退货,而且我也不知道闪光灯也知道。我们可以将*用作数据类型,但这仅应在特定情况下使用。在这种情况下,我认为我们只需要一个返回值,该返回值仅返回compareCompare的任何值。
现在,如果这是一个compareGenerator,它实际上应该返回布尔值TRUE或者FALSE,或者返回一个整数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所需的任何功能都可以放入其自己的函数或者方法中,并在需要时调用。