Domanda

Una delle cose che mi manca di più in ActionScript è la mancanza di sovraccarico degli operatori, in particolare ==.In un certo senso riesco a risolvere questo problema aggiungendo un metodo "Confronta" alle mie classi, ma ciò non aiuta in molti casi, come quando si desidera utilizzare cose come il dizionario integrato.

Esiste un buon modo per aggirare questo problema?

È stato utile?

Soluzione

No.

Ma non fa male aggiungere equals metodi per le tue lezioni.Cerco di non usarlo mai == quando si confrontano oggetti (lo stesso vale per ===, che è la stessa cosa per gli oggetti) poiché controlla solo identità .

Purtroppo tutte le raccolte in Flash e Flex presuppongono che l'identità sia l'unica misura di uguaglianza necessaria.

Ci sono indizi in Flex che qualcuno volesse alleviare questo problema in una sola volta, ma sembra che sia stato abbandonato:c'è un'interfaccia chiamata IUID, ed è menzionato nel Guida per sviluppatori Flex , ma non è usato da nessuna parte.Nemmeno le raccolte di Flex lo utilizzano per determinare l'uguaglianza.E poiché stai chiedendo una soluzione per Flash, potrebbe non averti aiutato comunque.

Ho scritto qualcosa in più su questo (nel contesto di Flex) sul mio blog: Non c'è uguaglianza?.

Altri suggerimenti

Sì, si può fare (ma attenzione, è complicato): http://filimanjaro.com/2012/operators-overloading-in-as3-javascript-too-%E2%80%93-workaround/

Nel tutorial ho scritto sull'overload degli operatori +=, -=.Ma è anche possibile con ==, posso scrivere di più a riguardo se non è chiaro.

Ah, l'approccio presenta qualche inconveniente (in rari casi può essere addirittura pericoloso).Pensaci due volte prima di utilizzarlo in una produzione.

MODIFICARE:

Dopo i test sembra che il trucco con +=, -= non si applichi all'operatore == (ciò che ha senso).Ci scusiamo per le informazioni fuorvianti.

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