Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
La sintaxis del lenguaje X++ proporciona dos tipos compuestos: matrices y contenedores. Estos tipos compuestos son útiles para agregar valores de tipos primitivos. Sin embargo, no se pueden almacenar objetos de clase en matrices o contenedores.
Use clases de colección para almacenar objetos. Permiten crear matrices, listas, conjuntos, mapas y estructuras que pueden contener cualquier tipo de datos, incluso objetos. Para obtener el máximo rendimiento, C++ implementa estas clases (son clases del sistema). Las clases de colección se conocían anteriormente como clases de base. Las clases de colección son Array, List, Map, Set y Struct.
- Matriz : esta clase es similar al tipo de matriz en el lenguaje X++, pero puede contener valores de cualquier tipo único, incluso objetos y registros. Obtiene acceso a objetos en un orden específico.
- List : esta clase contiene elementos a los que se accede secuencialmente. A diferencia de una matriz, la clase List proporciona un método addStart . Al igual que la clase Set , la clase List proporciona los métodos getEnumerator y getIterator . Puede usar un iterador para insertar y eliminar elementos de un objeto List .
- Asignación : esta clase asocia un valor de clave a otro valor.
- Set : esta clase contiene valores de cualquier tipo único. Los valores no se almacenan en la secuencia en la que se agregan. En su lugar, el objeto Set almacena el valor de una manera que optimiza el rendimiento del método in . Un objeto Set omite cualquier intento de agregar un valor que el objeto Set ya está almacenando. A diferencia de la clase Array , la clase Set proporciona los métodos in y remove .
- Struct : esta clase puede contener valores de más de un tipo. Se usa para agrupar información sobre una entidad específica.
El constructor de cada clase de colección excepto Struct toma un parámetro de tipo que es un elemento de la enumeración del sistema Types . La instancia de colección solo puede almacenar elementos de ese tipo. El elemento de enumeración Types::AnyType es un caso especial que no se puede usar para construir un objeto de colección, como un objeto Set . El valor NULL no se puede almacenar como un elemento en un objeto Set . Además, null no puede ser una clave en un objeto Map . Puede recorrer en iteración un objeto de colección mediante un iterador o enumerador. Estos son ejemplos típicos que muestran cómo puede obtener un iterador.
new MapIterator(myMap)
myMap.getEnumerator()
En El caso de los objetos Set, si agrega o quita elementos después de crear un iterador, la instancia de iterador ya no se puede usar para leer o recorrer paso a paso la colección.
Para los objetos Map , como para Los objetos Set , si quita algún elemento, el iterador ya no es válido. Sin embargo, un objeto MapIterator sigue siendo válido incluso después de una llamada al método Map.insert , independientemente de si la clave es nueva o si la clave ya existe y solo se actualiza el valor en el elemento Map . El código que llama a Map.insert y depende del objeto iterador restante válido podría producir un error si se ejecuta como CIL de .NET Framework.
Use las clases de colección para formar clases más complejas. Por ejemplo, puede implementar fácilmente una pila mediante una lista donde siempre agregue elementos al principio de la lista. A continuación, el elemento más reciente ocupa la parte superior de la pila.
También puede ampliar las clases de colección. Por ejemplo, puede ampliar la clase List para crear una lista de registros de clientes en los que las operaciones son seguras para tipos. En este caso, la clase de colección derivada solo acepta registros de cliente.