He intentado últimamente implementar algunas prácticas de codificación limpia en AS3. Una de ellas ha sido no dar referencias a matrices de un objeto contenedor. El punto es que controlo la adición y la eliminación de una clase y todos los demás usuarios de la matriz reciben la versión de solo lectura.Colecciones Inmutables Actionscript 3
En el momento en que se leía única versión es una claseArrayIterator escribí, que implementa un típico iterador interfaz (hasNext, getNext). También se extiende Proxy por lo que se puede utilizar en por cada bucles como puede una matriz.
Así que mi pregunta es si esta no es una característica fundamental de muchos idiomas? ¿La capacidad de pasar referencias para leer solo vistas de colecciones?
también ahora que se mejora la seguridad de tipos de colecciones en AS3, en la forma de la clasevectorial, cuando envuelvo un vector en una VectorIterator pierdo escribiendo por el bien de la inmutabilidad. ¿Hay alguna manera de implementar los dos deseos, la inmutabilidad y el tipado en AS3?
¿Cuál es la razón de ser del iterador unidireccional? Esto no es una crítica, solo tengo curiosidad. Además, ¿es posible extender esto para proporcionar funcionalidad de tipo de acceso por índice con la sintaxis de paréntesis familiar (myArray [i] = "foo"), sin que el objeto sea dinámico? –
Creo que no leí la documentación del Proxy con la suficiente diligencia la primera vez. La segunda vez parece que esto es exactamente para lo que la clase proxy debe ser utilizada. –
Sí) El Proxy es bastante útil, puedes hacer un clon relativamente completo de la API E4X, pero uno que construye YAML en lugar de XML, ese tipo de cosas, simplemente anula los métodos getProperty & setProperty –