Pregunta

Una de las cosas que más extraño en ActionScript es la falta de sobrecarga de operadores, en particular ==.En cierto modo soluciono este problema agregando un método "Comparar" a mis clases, pero eso no ayuda en muchos casos, como cuando quieres usar cosas como el Diccionario integrado.

¿Existe una buena manera de solucionar este problema?

¿Fue útil?

Solución

No.

Pero no está de más agregar equals métodos para tus propias clases.Intento no usar nunca == al comparar objetos (lo mismo ocurre con ===, que es lo mismo para los objetos) ya que solo verifica identidad .

Lamentablemente, todas las colecciones de Flash y Flex asumen que la identidad es la única medida de igualdad que se necesita.

Hay indicios en Flex de que alguien quiso aliviar este problema en algún momento, pero parece que fue abandonado:hay una interfaz llamada IUID, y se menciona en el Guía del desarrollador de Flex , pero no se usa en ninguna parte.Ni siquiera las colecciones de Flex lo utilizan para determinar la igualdad.Y como estás pidiendo una solución para Flash, es posible que de todos modos no te haya ayudado.

He escrito un poco más sobre esto (en el contexto de Flex) en mi blog: ¿No hay igualdad?.

Otros consejos

Sí, se puede hacer (pero cuidado, es complicado): http://filimanjaro.com/2012/operators-overloading-in-as3-javascript-too-%E2%80%93-workaround/

En el tutorial escribí sobre la sobrecarga del operador +=, -=.Pero también es posible con ==, puedo escribir más sobre eso si no está claro.

Ah, este método tiene algunos inconvenientes (en casos excepcionales puede resultar incluso peligroso).Piénselo dos veces antes de utilizarlo en una producción.

EDITAR:

Después de las pruebas, parece que el truco con +=, -= no se aplica al operador == (lo que tiene sentido).Perdón por la información engañosa.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top