Portal    Foro    Buscar    FAQ    Registrarse    Conectarse


Publicar nuevo tema  Responder al tema 
Página 1 de 1
 
 
Actualizar Colección Recursivamente
Autor Mensaje
Responder citando   Descargar mensaje  
Mensaje Actualizar Colección Recursivamente 
 
Buenas!

En este ejemplo mediante recursividad se actualizara el contenido de una colección con otra colección.

En una colección tenemos una serie de aplicaciones y versiones
En la otra colección tenemos o bien aplicaciones nuevas con su versión que queremos añadir a nuestra
colección aplicaciones o actualizar las versiones de las aplicaciones que ya teníamos.

Public Sub Main()

 Dim aplicaciones As Collection
 Dim actualizaciones As Collection
  
 aplicaciones = ["Editores": ["Pluma": 2.3], "Emuladores": ["Fuse Spectrum": 0.9, "Xroar": 1.0]]
 actualizaciones = ["Editores": ["Pluma": 2.3, "Gedit": 1.5], "Emuladores": ["Fuse Spectrum": 1.0, "Xroar": 1.0, "PCSX": 0.8]]
  
actualizacolecrecursiv(aplicaciones, actualizaciones)

End


Public Sub actualizacolecrecursiv(dst As Variant, src As Variant)
  
  Dim k As Variant
  
  For Each k In src      
    If dst.Exist(src.key) And (TypeOf(src.key) = gb.Object) Then    
        actualizacolecrecursiv(dst[k.key], src[k.key])            
    Else
      dst[src.key] = src[src.key]
    Endif    
  Next
  
End
 


Mostrando el contenido de la colección aplicaciones:

 actualizaci_nrecursivacolecci_n

Ejemplo original de Python se puede encontrar en:

https://terminus.ignaciocano.com/20...ario-en-python/

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: Actualizar Colección Recursivamente 
 
Citar:
(TypeOf(src.key) = gb.Object)

¿Y si el elemento de la colección contiene un array?¿o un formulario?
 




===================
No podemos regresar
 
shordi - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Actualizar Colección Recursivamente 
 
shordi escribió: [Ver mensaje]
Citar:
(TypeOf(src.key) = gb.Object)

¿Y si el elemento de la colección contiene un array?¿o un formulario?


Pues sin problema, porque todo es un objeto, al fin y al cabo.

gb.Object es el padre de todos, es la madre del cordero, es como dios, porque es padre y madre al mismo tiempo, ufff, no sé que me he fumado!!!      

Espera, espera, que no soy shell, que soy el administrador. Bueno, todo el mundo tiene un día malo  

Saludos
 




===================
Jesús Guardón

Por favor, usemos el corrector ortográfico antes de pulsar el botón "Enviar".

"uo ǝs ʇɐu pıɟıɔıן ɐdɹǝupǝɹ ɐ dɹoƃɹɐɯɐɹ, soןo ɥɐʎ bnǝ dɹodouǝɹsǝןo"
 
jguardon - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Actualizar Colección Recursivamente 
 
Pues sin problema, porque todo es un objeto, al fin y al cabo.

No digo que no funcione, que no lo sé, pero hacer recursiva la función que recorre colecciones para que recorra cualquier objeto, pues como que es desvirtuar un poco el tema... ¿no?

Leche calentita y a sudar a la cama, Jesús...
 




===================
No podemos regresar
 
shordi - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Actualizar Colección Recursivamente 
 
La verdad es que no he probado con un array, pero eso tambien es una posibilidad.

Así habría cumplido con el ejemplo que Shordi me pedía en otro post.

Lo cierto es que si vemos una colección de colección de un vistazo, "sin gafas de aumento", parece un array.  

Citar:

Espera, espera, que no soy shell, que soy el administrador. Bueno, todo el mundo tiene un día malo


 

Shell solo puede haber uno.  icono_almeja_75715

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: Actualizar Colección Recursivamente 
 
Citar:

No digo que no funcione, que no lo sé, pero hacer recursiva la función que recorre colecciones para que recorra cualquier objeto, pues como que es desvirtuar un poco el tema... ¿no?


Pues para la POO, le vendría de perlas.
 




===================
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: Actualizar Colección Recursivamente 
 
Shordi:

Puedes probar esto para que solo sea colecciones:

Public Sub actualizacolecrecursiv(dst As Variant, src As Variant)
  
  Dim k As Variant
  
  For Each k In src      
    'If dst.Exist(src.key) And (TypeOf(src.key) = gb.Object) Then        
    If dst.Exist(src.key) And src[k.key] Is Collection Then        
        actualizacolecrecursiv(dst[k.key], src[k.key])            
    Else
      dst[src.key] = src[src.key]
    Endif    
  Next
  
End
 


El resultado es idéntico. Ahora habría que jugar con los arrays.

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
Mostrar mensajes anteriores:    
 
OcultarTemas parecidos
Tema Autor Foro Respuestas último mensaje
No hay nuevos mensajes Borrar Recursivamente drjuano Aplicaciones/Fragmentos de Código 14 Viernes, 19 Abril 2013, 20:19 Ver último mensaje
drjuano
No hay nuevos mensajes Crear Directorios Recursivamente shordi Aplicaciones/Fragmentos de Código 3 Viernes, 06 Marzo 2015, 14:08 Ver último mensaje
Shell
No hay nuevos mensajes Colección Anidada Shell General 4 Martes, 28 Junio 2016, 18:46 Ver último mensaje
Shell
No hay nuevos mensajes Listar Todos Los Archivos De Una Carpeta Y... v3ctor General 9 Miercoles, 06 Julio 2016, 18:50 Ver último mensaje
shordi
 

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