Pergunta

Uma das coisas que mais sinto falta no ActionScript é a falta de sobrecarga de operadores, em particular ==.Eu meio que contornei esse problema adicionando um método "Comparar" às minhas classes, mas isso não ajuda em muitos casos, como quando você deseja usar coisas como o Dicionário integrado.

Existe uma boa maneira de contornar esse problema?

Foi útil?

Solução

Não.

Mas não custa acrescentar equals métodos para suas próprias classes.Eu tento nunca usar == ao comparar objetos (o mesmo vale para ===, que é a mesma coisa para objetos), pois apenas verifica identidade .

Infelizmente, todas as coleções em Flash e Flex assumem que a identidade é a única medida de igualdade necessária.

Há indícios no Flex de que alguém queria aliviar esse problema uma vez, mas parece que foi abandonado:existe uma interface chamada DIU, e é mencionado no Guia do desenvolvedor Flex , mas não é usado em lugar nenhum.Nem mesmo as coleções do Flex o utilizam para determinar igualdade.E como você está pedindo uma solução para o Flash, isso pode não ter ajudado de qualquer maneira.

Escrevi um pouco mais sobre isso (no contexto do Flex) no meu blog: Não há igualdade?.

Outras dicas

Sim, isso pode ser feito (mas tenha cuidado, é hacky): http://filimanjaro.com/2012/operators-overloading-in-as3-javascript-too-%E2%80%93-workaround/

No tutorial escrevi sobre sobrecarga de operadores +=, -=.Mas também é possível com ==, posso escrever mais sobre isso se não estiver claro.

Ah, a abordagem tem algumas desvantagens (em casos raros pode até ser perigosa).Pense duas vezes antes de usá-lo em uma produção.

EDITAR:

Após os testes, parece que o truque com +=, -= não se aplica ao operador == (o que faz sentido).Desculpe pelas informações enganosas.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top