为了理解数据类型是什么,我们必须知道返回的预期结果是什么。我需要查看compareGeneral的代码块,我仍然不相信这会有所帮助。你有两个具有相同函数“gc.sortCompareFunction”的返回值,我认为这是不正确的,因为返回值得到一个值,然后作为break命令,这意味着忽略具有相同功能块的其余部分。问题是我不知道哪个回报是预期的回报,而且我不知道Flash也知道。您可以使用*作为数据类型,但只能在特定情况下使用。在这种情况下,我相信你只需要一个只返回compareGeneral值的返回值。
现在,如果这是一个compareGenerator,它应该返回一个布尔值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需要什么功能,都可以进入其自己的功能或方法,并在需要时调用。
你是对的 - 那是有效的。我期待着像Haskell或F#那样需要更精确的东西,但我看到ActionScript更宽容。 – Eric 2008-09-16 17:23:29