Portal    Foro    Buscar    FAQ    Registrarse    Conectarse


Publicar nuevo tema  Responder al tema 
Página 1 de 2
Ir a la página 1, 2  Siguiente
 
Lista,Variant
Autor Mensaje
Responder citando   Descargar mensaje  
Mensaje Lista,Variant 
 
Hola!.

Estaba ojeando el tema de listas en Python y fue curioso que una lista pueda albergar a otra lista y de
distinto tipo. Cuando hablamos de listas podemos referirnos a un array.

Hice un  ejemplo que aunque no tiene la potencia de la lista de Python, puede tener en un array, elementos
de distinto tipos aprovechando el uso del tipo Variant .No es lo mismo, claro.

Public Sub Listas()
  Dim lista1 As Integer[] = [5, 1, 8]
  Dim lista2 As String[] = ["Maria", "Javier", "Luis", "Alberto"]
  Dim lista3 As New Variant[]
  Dim elemento As Variant
  
  lista3.Insert(lista1)
  lista3.Insert(lista2)
  
  For Each elemento In lista3
      Select Case TypeOf(elemento)
        Case gb.Integer
          Print elemento & " es un tipo entero"
        Case gb.String
          Print elemento & " es un tipo cadena"
        Case Else
          Print elemento & " es un tipo desconocido"          
      End Select      
  Next
    
End
 


Así que en Lista3 se almacenan dos tipos de valores distintos.

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: Lista,Variant 
 
interesante...
¿y el elemento 2 de lista3 es un array ("Maria", "Javier", "Luis", "Alberto"), o es el elemento "Maria"?
osea ¿se suman los elementos del array, o se mantienen independiente (que es lo que ocurre con Python)...?

lo probaré....
 




===================
Blog personal
Web: SoloGambas seleccion de articulos dedicados a Gambas
Visita el Curso de Gambas3 ¡¡¡Gratuito!!!
 
última edición por jsbsan el Jueves, 25 Abril 2013, 08:26; editado 1 vez 
jsbsan - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Lista,Variant 
 
Se mantinen por separado. Yo lo uso desde hace tiempo para todo, pero sobre todo con la propiedad .tag de los objetos.
Por ejemplo al rellenar un listbox con los elementos de una tabla A que tiene dos claves foráneas sobre las tablas B y C, puedes alamacenar en el .tag del listbox un variant[]  que contenga en el primer elemento un integer[] con las claves de la tabla B y otro integer[] con las claves de la tabla C. Luego el relleno y referencia a las tablas relacionadas lo tienes chupao....


Saludos.
 



 
shordi - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Lista,Variant 
 
jsbsan escribió: [Ver mensaje]
interesante...
¿y el elemento 2 de lista3 es un array ("Maria", "Javier", "Luis", "Alberto"), o es el elemento "Maria"?
osea ¿se suman los elementos del array, o se mantienen independiente (que es lo que ocurre con Python)...?


No, el elemento 2 es Javier.  

Solamente es una array de distintos tipos que se han añadido a un array Variant que incluye todos elementos
de lista1 y lista2.El primer elemento de lista3 es Maria y el ultimo es 8.

No es lo mismo.

Pero tener elementos de distintos tipos en un array para luego operar con ellos según nos convenga tampoco es mala idea.
Aunque ya sabemos que variant ocupa mas, claro.

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: Lista,Variant 
 
shordi y shell:
¿respuestas contradictorias?
 




===================
Blog personal
Web: SoloGambas seleccion de articulos dedicados a Gambas
Visita el Curso de Gambas3 ¡¡¡Gratuito!!!
 
jsbsan - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Lista,Variant 
 
Se mantienen separados si utilizas lista3.Add(lista1). Pero Shell usa lista3.Insert(lista1).
Yo nunca había usado insert, con lo que veo que el resultado es distinto...

Saludos.
 



 
shordi - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Lista,Variant 
 
La diferencia entre .add y .insert, es sutil, pero la hay:

Sub Add ( Value As Variant [ , Index As Integer ] ) '-> se añade un tipo variant, en la posicion (index) indicada
Function Insert ( Array As Variant[] [ , Pos As Integer ] ) As Variant[] '-> se añade un tipo array variant en la posicion (pos) indicada.
 




===================
Blog personal
Web: SoloGambas seleccion de articulos dedicados a Gambas
Visita el Curso de Gambas3 ¡¡¡Gratuito!!!
 
jsbsan - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Lista,Variant 
 
Con lo que hemos estado hablando, me he hecho un ejemplo, he comprobado que ademas se puede añadir listas a listas, y esa a su vez a otras listas, creando estructuras de datos mucho más complejas. Lo curioso es la forma de acceder a los elementos de esa estructuras.

Estrutura de datos a codificar:
 estructura_de_datos_almacenada

Ejemplo:

' gambas class file

Public Sub _new()
  
End

Public Sub Form_Open()
  
  piezas()
  
End

Public p As New Variant[]

Public Sub piezas()
  
  Dim p1 As Integer[] = [5, 4, 2]
  Dim p2 As String[] = ["maria", "julio", "eva"]
  Dim pinsertada As Integer[] = [-1, -2, 334]
  
  p.add(p1) 'se inserta el nombre del  array integer[]
  p.add(p2) 'se inserta el nombre del  array string[]
  p.Insert(pinsertada) 'se inserta valores uno a uno
  
  Print "------------------------------------"
  Print "Lista de valores del array variant"
  Print p[0]
  Print p[1]
  Print p[2]
  Print p[3]
  Print p[4]
  Print "------------------------------------"
  
  'fijaros como acceso al valor del array tipo string
  Print p[0][0]
  
  'fijaros como acceso al valor del array de cadenas
  Print p[1][2]
  
  'rizando el rizo
  rizando_el_rizo()
  
End

Public Sub rizando_el_rizo()
  
  Dim array1 As String[] = ["hijo maria", "hijo julio"]
  Dim array2 As New Variant[]
  
  array2.Add(array1)
  
  Print "Rizando el rizo, añado un array  variant[]"  
  'array que añado :
  Print array2
  p.Add(array2)
  'acceso a elementos
  Print p[5]
  'acceso al elemento dentro de la lista
  Print p[5][0][1]
  
End


El resultado que se obtiene en consola:
------------------------------------
Lista de valores del array variant
(Integer[] 0xbfa8f8)
(String[] 0xbfad38)
-1
-2
334
------------------------------------
5
eva
Rizando el rizo, añado un array  variant[]
(Variant[] 0xbfab98)
(Variant[] 0xbfab98)
hijo julio

Estructura_De_Datos_Listas-0.0.1.tar.gz
Descripción: Ejemplo de como crear estructuras de datos complejas con listas y ver elementos. 
Descargar
Nombre del archivo: Estructura_De_Datos_Listas-0.0.1.tar.gz
Tamaño: 4.93 KB
Descargado: 20 veces
Estructura_De_Datos_Listas-0.0.1.tar.gz
Descripción: Ejemplo de como crear estructuras de datos complejas con listas y ver elementos. 
Descargar
Nombre del archivo: Estructura_De_Datos_Listas-0.0.1.tar.gz
Tamaño: 4.93 KB
Descargado: 20 veces
Estructura_De_Datos_Listas-0.0.1.tar.gz
Descripción: Ejemplo de como crear estructuras de datos complejas con listas y ver elementos. 
Descargar
Nombre del archivo: Estructura_De_Datos_Listas-0.0.1.tar.gz
Tamaño: 4.93 KB
Descargado: 20 veces

 




===================
Blog personal
Web: SoloGambas seleccion de articulos dedicados a Gambas
Visita el Curso de Gambas3 ¡¡¡Gratuito!!!
 
jsbsan - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Lista,Variant 
 
Bajando el ejemplo.

Que tengo que poneros en otro post algo sobre Arduino.
Luego lo veo mas detenidamente y contesto con un poco de mas tranquilidad.


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: Lista,Variant 
 
Julio:

Pues visto tu ejemplo. Tiene mucho parecido en algunos detalles con Python.

Hay cosas que se podrían implementar, si tuviéramos la necesidad de hacerlo.

Como habéis visto Python se complica bastante con las listas.
O es lo que me parece.

Cuando use Insert en vez Add. Si veis la ayuda de gambas,
es mas para insertar un array mas que un solo elemento.

http://gambasdoc.org/help/comp/gb/string%5B%5D/insert?es

Pero lo dicho, que complicación.  

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 Lista De Reproducción hierro59 General 1 Sabado, 12 Octobre 2013, 04:27 Ver último mensaje
jousseph
No hay nuevos mensajes Lista De Errores De Gambas Shell General 2 Lunes, 13 Enero 2014, 20:23 Ver último mensaje
jsbsan
No hay nuevos mensajes El Poder De Una Subrutina Que Devuelve Var... v3ctor General 1 Jueves, 15 Diciembre 2016, 08:24 Ver último mensaje
jsbsan
No hay nuevos mensajes Variable Variant, Como Saber De Que Tipo Es tincho Aplicaciones/Fragmentos de Código 4 Lunes, 05 Noviembre 2018, 13:48 Ver último mensaje
tincho
 

Publicar nuevo tema  Responder al tema  Página 1 de 2
Ir a la página 1, 2  Siguiente

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