|
Página 1 de 2
|
Autor |
Mensaje |
Shell
Analista Programador
Registrado: Marzo 2010
Mensajes: 5278
Edad: 53 Ubicación: Al otro lado de la pantalla
|
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.
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"
|
#1 Miercoles, 24 Abril 2013, 20:26 |
|
|
jsbsan
Analista Programador
Registrado: Septiembre 2009
Mensajes: 4175
Edad: 51 Ubicación: dos hermanas, sevilla
|
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é....
última edición por jsbsan el Jueves, 25 Abril 2013, 08:26; editado 1 vez
|
#2 Jueves, 25 Abril 2013, 08:25 |
|
|
shordi
Analista Programador
Registrado: Septiembre 2009
Mensajes: 4982
Edad: 64 Ubicación: Albacete
|
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.
|
#3 Jueves, 25 Abril 2013, 09:06 |
|
|
Shell
Analista Programador
Registrado: Marzo 2010
Mensajes: 5278
Edad: 53 Ubicación: Al otro lado de la pantalla
|
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)...?
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"
|
#4 Jueves, 25 Abril 2013, 09:27 |
|
|
jsbsan
Analista Programador
Registrado: Septiembre 2009
Mensajes: 4175
Edad: 51 Ubicación: dos hermanas, sevilla
|
Re: Lista,Variant
shordi y shell:
¿respuestas contradictorias?
|
#5 Jueves, 25 Abril 2013, 11:48 |
|
|
shordi
Analista Programador
Registrado: Septiembre 2009
Mensajes: 4982
Edad: 64 Ubicación: Albacete
|
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.
|
#6 Jueves, 25 Abril 2013, 12:48 |
|
|
jsbsan
Analista Programador
Registrado: Septiembre 2009
Mensajes: 4175
Edad: 51 Ubicación: dos hermanas, sevilla
|
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.
|
#7 Jueves, 25 Abril 2013, 13:03 |
|
|
jsbsan
Analista Programador
Registrado: Septiembre 2009
Mensajes: 4175
Edad: 51 Ubicación: dos hermanas, sevilla
|
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:
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
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 |
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 |
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 |
|
#8 Jueves, 25 Abril 2013, 21:00 |
|
|
Shell
Analista Programador
Registrado: Marzo 2010
Mensajes: 5278
Edad: 53 Ubicación: Al otro lado de la pantalla
|
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"
|
#9 Viernes, 26 Abril 2013, 08:28 |
|
|
Shell
Analista Programador
Registrado: Marzo 2010
Mensajes: 5278
Edad: 53 Ubicación: Al otro lado de la pantalla
|
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"
|
#10 Viernes, 26 Abril 2013, 11:06 |
|
|
|
Temas parecidos
Temas parecidos
|
Página 1 de 2
|
Usuarios navegando en este tema: 0 registrados, 0 ocultos y 1 invitado Usuarios registrados conectados: Ninguno
|
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
|
|
|
|
|