Portal    Foro    Buscar    FAQ    Registrarse    Conectarse


Publicar nuevo tema  Responder al tema 
Página 1 de 1
 
 
Colección Anidada
Autor Mensaje
Responder citando   Descargar mensaje  
Mensaje 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
 




===================
Gambas Básico
"No es un bug, es una característica no documentada"
 
Shell - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje 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.
 




===================
No podemos regresar
 
shordi - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje 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
 




===================
Gambas Básico
"No es un bug, es una característica no documentada"
 
Shell - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Colección Anidada 
 
Enga, anda, hazla...

     
 




===================
No podemos regresar
 
shordi - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Colección Anidada 
 
Dame tiempo.  
 




===================
Gambas Básico
"No es un bug, es una característica no documentada"
 
Shell - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Mostrar mensajes anteriores:    
 
OcultarTemas parecidos
Tema Autor Foro Respuestas último mensaje
No hay nuevos mensajes Problemas Con La Colección Me.Controls shordi General 8 Sabado, 23 Julio 2011, 20:12 Ver último mensaje
shordi
No hay nuevos mensajes ¿Consulta Anidada O Subconsulta? Sqlite Dani26 Bases de Datos 3 Sabado, 27 Octobre 2012, 11:00 Ver último mensaje
jguardon
No hay nuevos mensajes Invirtiendo Una Colección Shell General 3 Martes, 27 May 2014, 09:28 Ver último mensaje
jsbsan
No hay nuevos mensajes Actualizar Colección Recursivamente Shell General 6 Jueves, 30 Junio 2016, 23:46 Ver último mensaje
Shell
 

Publicar nuevo tema  Responder al tema  Página 1 de 1
 

Usuarios navegando en este tema: 0 registrados, 0 ocultos y 1 invitado
Usuarios registrados conectados: Ninguno


 
Lista de permisos
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



  

 

cron