Una función que devuelva más de un valor

Started by Yawin, March 07, 2015, 09:45:39 PM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

Yawin

Wole, os comento el problema que tengo:

Estoy haciendo un parseador de xml simple, porque Bennu tampoco trae de eso nativamente, y quiero hacer una función que devuelva todos los subnodos del nodo indicado. La función es sencilla; pero tengo un problema, bueno, dos en realidad.

El más simple de los dos es que, en C yo podría hacer lo siguiente:
1º Obtengo cuántos subnodos son
2º Declaro una array de tantos valores como cantidad he obtenido en el paso 1º
3º Obtengo los datos de cada subnodo y los meto en la array.

Y, esto, no se puede hacer en Bennu, ¿no?

El segundo problema es más complejo; al menos para mi. Tras obtener esa array, quiero devolverlos a quien ha llamado a la función. Yo, hasta ahora, como solía ser una cantidad de datos fija, solía tener una array global que me servía para varias cosas y, una de ellas, pasar datos de una función a otra; o, incluso, de un proceso a otro. Pero no tengo ni idea de cómo puedo hacerlo.

He buscado por google, pero lo que encuentro es para lenguajes orientados a objetos y, como entenderéis, me sirven de poco xD ¿Se os ocurre alguna forma?
Sigue el desarrollo de mi motor RPG: https://www.youtube.com/watch?v=TbsDq3RHU7g

process main()
       begin
           loop
               pedo();
               frame;
            end
       end

Ulthar Kaufman

Como redefinir arrays al vuelo no se puede, supongo q lo que toca es definir el array por exceso, cuando vayas a rellenarlo empiezas por la posición 1, y cuando termines usas la posición 0 para decir cuantos elementos útiles hay para recorrerlo de forma óptima posteriormente. Podrías hacer una función para vaciarlo posteriormente pero recorriendolo así tampoco haría falta. El precio es el desperdicio de memoria, pero tampoco creo que afecte mucho.

Luego pasar el array por referencia como parámetro de la función, o definirlo global.

No sé si era por ahí por donde ibas o me he ido por otros derroteros.

Yawin

Antes que declarar una array enorme, creo que preferiría prepararme una lista dinámica. El problema es que al que use la librería debería pasarle algo más cómodo que una lista semejante.

En cuanto a lo de pasar referencia, la verdad es que ni se me había ocurrido xD fíjate que en C++ incluso abuso de ello; pero aquí no se me ha ocurrido jajajaja
Sigue el desarrollo de mi motor RPG: https://www.youtube.com/watch?v=TbsDq3RHU7g

process main()
       begin
           loop
               pedo();
               frame;
            end
       end