Чтобы понять, что такое тип данных, мы должны знать, каков предполагаемый результат возврата. Мне нужно увидеть блок кода для compareGeneral, и я до сих пор не считаю, что это поможет. У вас есть два возврата с той же функцией «gc.sortCompareFunction», я считаю, что это неверно, поскольку возврат получает значение, а затем действует как команда break, означающая, что остальная часть ничего с одним и тем же функциональным блоком игнорируется. Проблема в том, что я не знаю, какой возврат является предполагаемым возвратом, и я не знаю, что флэш знает. Вы можете использовать * как тип данных, но это должно использоваться только в определенных ситуациях. В этой ситуации я считаю, что вам нужно только одно возвращаемое значение, которое возвращает только значение 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