Bennu Game Development

Foros en Español => Mesa de Ayuda => Topic started by: Yawin on March 07, 2015, 09:45:39 PM

Title: Una función que devuelva más de un valor
Post by: Yawin on March 07, 2015, 09:45:39 PM
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?
Title: Re:Una función que devuelva más de un valor
Post by: Ulthar Kaufman on March 08, 2015, 12:25:58 AM
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.
Title: Re:Una función que devuelva más de un valor
Post by: Yawin on March 08, 2015, 12:54:30 AM
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