Colección Anidada


Objetivo: Colección Anidada
Buenas!.

Estaba haciendo un ejercicio con Python y los diccionarios. Este lenguaje es capaz de mostrarte el valor directamente de una colección,
una lista ( similar a un array ) sin un bucle, pero en gambas es necesario disponer de un bucle para mostrarlo.

Este ejercicio se podría haber hecho mejor con una estructura o una clase, incluso un registro.
Tenemos los datos de una persona, como pueden ser el nombre completo, su nick, sus hobbies.
Y queremos mostrarlos.

He usado colección de colección e incluso una colección cuyos valores son un array.

Public Sub Main()

Dim persona As New Collection

persona = ["NombreCompleto": ["Apellidos": "Quijano", "Nombre": "Alonso"], "Nick": ["Don Quijote"], "Hobby": ["Caballero Andante", "Lector de obras de caballerías"]]

MostrarColeccion(persona)

End

Public Sub MostrarColeccion(aCol As Collection)

Dim tipo As Variant
Dim dato As String
Dim indice As Integer

For Each tipo In aCol
If tipo Is Collection Then
For Each dato In tipo
Print tipo.key & ": " & dato
Next
Else If tipo Is Array Then
For indice = 0 To tipo.Max
Print aCol.Key & ": " & tipo[indice]
Next
Endif
Next

End


Salida:
Citar:

Apellidos: Quijano
Nombre: Alonso
Nick: Don Quijote
Hobby: Caballero Andante
Hobby: Lector de obras de caballerías


No he podido usar constantes de tipos a menos que hubiera usado el tipo objeto.

Tampoco podemos hacer:

if cadena is String then...

Dando como error "String inesperado".
En ese caso se debe usar:

if type(cadena) = gb.string then


Saludos

Objetivo: Re: Colección Anidada
¿y si la colección tiene un elemento que es una colección que tiene un elemento que es una colección?

la función Mostrarcoleccion debería ser recursiva. Me encanta la simpleza y elegancia de las funciones recursivas... eso sí, pueden ser diabólicas de hacer...

A ver si te animas.

Perfil MP  
Objetivo: Re: Colección Anidada
Shordi:

Las funciones recursivas son algo diabólicas por que pueden volver a uno un poco más loco.
Efectivamente es algo recursivo, pero tampoco hay que obsesionarse con buscarle la recursividad,
puede dar dolores de cabeza.

Hay que saber verlo, tu estás más acostumbrado.

Intentaba de "asimilar" el ejercicio al de Python dentro de lo posible. Si usaba una estructura, clase
cada vez se parecía menos al ejercicio, era ya ir mucho por delante.

Y eso que estuve una temporada con la recursividad, es algo compleja. Viendo sus tipos.

Debería haber usado "leer obras de caballería", pero no sé por que usé "lector de obras de caballería.".
Es un Quijote contemporáneo.

Saludos

Objetivo: Re: Colección Anidada
Enga, anda, hazla...


Perfil MP  
Objetivo: Re: Colección Anidada
Dame tiempo.


Página 1 de 1


  
No puede crear mensajes
No puede responder temas
No puede editar sus mensajes
No puede borrar sus mensajes
No puede votar en encuestas
No puede adjuntar archivos
Puede descargar archivos
No puede publicar eventos en el calendario

   

Está utilizando la versión (Lo-Fi). Para ver la versión completa del foro, haga clic aquí.

Powered by Icy Phoenix based on phpBB
Design by DiDiDaDo

Página generada en:: 0.4053s (PHP: -73% SQL: 173%)
Consultas SQL: 45 - Debug off - GZIP Activado