AX Dev Warehouse

Um blog dedicado ao desenvolvimento de soluções em Microsoft Dynamics AX
posts - 41, comments - 18, trackbacks - 0

Coleções do X++: Iterando

Existem duas formas de iterar as coleções do X++. Utilizando um iterator ou utilizando um enumerator. Eles têm funcionalidades bem parecidas, mas o enumerator deve ser utilizado sempre que possível em detrimento ao iterator.

Vamos ver exemplos do dois:

Iterando com o Iterator

    Map mapa = new Map(Types::Integer, Types::String);
    MapIterator mapaIt;

    mapa.insert(1, "Joao");
    mapa.insert(2, "Eduardo");
    mapa.insert(3, "Maria");
    mapa.insert(4, "Joao");

    mapaIt = new MapIterator(mapa);

    while(mapaIt.more())
    {
        print mapaIt.value();
        mapaIt.next();
    }

    pause;
    //Resultado:
    //Joao
    //Eduardo
    //Maria
    //Joao

Como o enumerator fica bem parecido, uma vantagem é que o método moveNext do enumerator, pula para o próximo item ao mesmo tempo que retorna um boleano se existem mais linhas. Desta forma não é necessário um método next e ou more (como no iterator):

    List lista = new List(Types::Integer);
    ListEnumerator listaEt;
    ;

    lista.addEnd(10);
    lista.addEnd(20);
    lista.addStart(1);
    lista.addEnd(50);

    listaEt = lista.getEnumerator();

    while (listaEt.moveNext())
    {
        print listaEt.current();
    }

    pause;

    //Resultado:
    //1
    //10
    //20
    //50

Todas as coleções que vimos até agora suportam tanto a utilização do iterator como do enumerator: Map, Set, Array e List

Print | posted on Friday, April 06, 2007 1:13 PM | Filed Under [ X++ ]

Powered by: