2008-09-16 6 views

Antwort

1

Ist "Funktion" nicht ein Datentyp?

+0

Richtig du bist - das funktioniert. Ich habe erwartet, etwas genaueres zu benötigen, wie in Haskell oder F #, aber ActionScript ist nachsichtiger. – Eric

0

Um zu verstehen, was der Datentyp ist, müssen wir wissen, was das beabsichtigte Ergebnis der Rückkehr ist. Ich muss den Code-Block für compareGeneral sehen, und ich glaube immer noch nicht, dass das helfen wird. Sie haben zwei Returns mit der gleichen Funktion "gc.sortCompareFunction", ich glaube, das ist inkorrekt, da return einen Wert erhält und dann als Break-Befehl fungiert, was bedeutet, dass der Rest der Dinge, die denselben Funktionsblock haben, ignoriert wird. Das Problem ist, dass ich nicht weiß, welche Rückkehr die beabsichtigte Rückkehr ist, und ich weiß auch nicht, dass Flash es weiß. Sie können * als Datentyp verwenden, aber dies sollte nur in bestimmten Situationen wirklich verwendet werden. In dieser Situation glaube ich, dass Sie nur den einen Rückgabewert benötigen, der nur den Wert von compareGeneral zurückgibt.

Nun, wenn dies ein compareGenerator ist, sollte es wirklich entweder ein Boolean TRUE oder FALSE zurückgeben, oder ein int 0 oder 1, verwenden Sie ersteres. Ich glaube auch, dass wir eine weniger Funktion verwenden können. Da ich nicht alles von Ihrem Code gesehen habe und ich bin nicht genau sicher, was Sie zu erreichen versuchen, ist das Folgende hypothetisch.

 
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); 

In diesem Fall compareGeneral (objA, objB); kehrt wahr zurück, obwohl wir noch nichts Nützliches damit getan haben. Hier ist ein Weg, wie Sie es benutzen können. Denken Sie daran, dass es entweder einen Wert von wahr oder falsch zurückgibt, damit wir es wie eine Variable behandeln können.

 
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!"); 
} 

Ich hoffe, dass diese in der Lage ist, Sie Daten zu helfen Typen verstehen und Werte zurückgeben. Ich weiß nicht, was Sie mit tmp tun, aber im Allgemeinen Funktionen, die einen Wert liefern mit dieser einen Sache und nur diese Sache, so ist es am besten, dass die Vergleichsfunktion eine Sache gegen die andere vergleichen und dass der Umfang des Aufrufs sein . Welche Funktionalität Sie auch mit tmp benötigen, kann in eine eigene Funktion oder Methode gehen und bei Bedarf aufgerufen werden.

Verwandte Themen