qual è la sintassi flex (ActionScript3) per il tipo di funzione con valore di funzione?

StackOverflow https://stackoverflow.com/questions/74649

  •  09-06-2019
  •  | 
  •  

Domanda

Qual è la sintassi per dichiarare un tipo per il mio generatore di funzioni di confronto in un codice come il seguente?

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); };
}();
È stato utile?

Soluzione

"Funzione" non è un tipo di dati?

Altri suggerimenti

Per capire qual è il tipo di dati, dobbiamo sapere qual è il risultato previsto del reso.Ho bisogno di vedere il blocco di codice per compareGeneral e ancora non credo che possa essere d'aiuto.Hai due ritorni all'interno della stessa funzione "gc.sortCompareFunction", credo che questo non sia corretto poiché return ottiene un valore e quindi agisce come un comando di interruzione, il che significa che il resto di qualsiasi cosa all'interno dello stesso blocco funzione viene ignorato.Il problema è che non so quale sia il rendimento previsto e non so nemmeno che Flash lo sappia.Puoi usare * come tipo di dati, ma dovrebbe essere usato solo in situazioni specifiche.In questa situazione credo che sia necessario solo l'unico valore restituito che restituisce semplicemente qualunque valore di compareGeneral.

Ora, se questo è un compareGenerator, dovrebbe davvero restituire un valore booleano TRUE o FALSE, oppure un int 0 o 1, usiamo il primo.Inoltre credo che possiamo usare una funzione in meno.Dal momento che non ho visto tutto il tuo codice e non sono esattamente sicuro di cosa stai cercando di realizzare, quanto segue è ipotetico.

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 questo caso compareGeneral(objA,objB);restituisce true, anche se non abbiamo ancora fatto nulla di utile con esso.Ecco un modo in cui puoi usarlo.Ricorda che restituisce un valore true o false, quindi possiamo trattarlo come una variabile.

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

Spero che questo sia in grado di aiutarti a comprendere i tipi di dati e i valori restituiti.Non so cosa stavi facendo con tmp, ma generalmente le funzioni che restituiscono un valore si occupano di quella cosa e solo quella cosa, quindi è meglio che la funzione di confronto confronti una cosa con l'altra e questa sia l'entità della chiamata .Qualunque funzionalità richiesta con tmp può essere inserita nella propria funzione o metodo ed essere chiamata quando necessario.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top