0

在如下代码中为我的比较函数生成器声明类型的语法是什么?

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); };
}();
4

2 回答 2

1

“函数”不是数据类型吗?

于 2008-09-16T17:20:34.777 回答
0

为了理解数据类型是什么,我们必须知道返回的预期结果是什么。我需要查看 compareGeneral 的代码块,但我仍然不相信这会有所帮助。您有两个具有相同功能“gc.sortCompareFunction”的返回,我认为这是不正确的,因为 return 获取一个值然后充当中断命令,这意味着具有相同功能块的其余任何内容都将被忽略。问题是我不知道哪个return是预期的return,我也不知道flash知道。您可以使用 * 作为数据类型,但这应该只在特定情况下使用。在这种情况下,我相信您只需要一个返回值,它只返回 compareGeneral 的任何值。

现在,如果这是一个 compareGenerator,它真的应该返回一个布尔值 TRUE 或 FALSE,或者一个 int 0 或 1,让我们使用前者。另外我相信我们可以少用一个功能。由于我没有看到您的所有代码,并且我不确定您要完成什么,因此以下是假设的。

函数 compareGeneral(a:object,b:object):Boolean
{
   //检查与每个对象关联的一些属性是否相似。
   如果(a.someAssignedPropery == b.someAssignedPropery)
   {
      返回真;
   }
   返回假;
}
var objA:Object = new Object();
objA.someAssignedProperty = "AS3";
objB.someAssignedProperty = "AS3";

比较一般(objA,objB);

在这种情况下 compareGeneral(objA,objB); 返回 true,尽管我们还没有对它做任何有用的事情。这是您可以使用它的一种方式。请记住,它要么返回 true 要么 false 的值,因此我们可以将其视为变量。

if(compareGeneral(objA,objB)) //同 if(compareGeneral(objA,objB)) == true)
{
   trace("你找到了一个匹配项!");
   //在这里,您可以根据找到的匹配项调用其他函数或设置变量或任何您需要的功能。
}
别的
{
  trace("找不到匹配的!");
}

我希望这能够帮助你理解数据类型和返回值。我不知道你在用 tmp 做什么,但通常返回值的函数只处理那一件事,而且只处理那件事,所以比较函数最好将一件事与另一件事进行比较,这就是调用的范围. tmp 需要的任何功能都可以放在它自己的函数或方法中,并在需要时调用。

于 2008-09-24T06:59:35.130 回答