Array De Distintos Tipos


Ir a la página 1, 2, 3  Siguiente

Objetivo: Array De Distintos Tipos
Hola!.

Os comento este problema.

Si tengo un array tal como este: [1,2,3,4,[5,6,7] ]
¿ Cómo harías para visualizar cada elemento del array ?.

Lo hice de esta forma:

Public Sub Main()

Dim alista1 As Variant[] = [1, 2, 3, 4]

alista1.Add([5, 6, 7])

MostrarArray(alista1)

End

Public Sub MostrarArray(lista As Variant[])

Dim tipo1 As Variant
Dim tipo2 As Integer

For Each tipo1 In lista
If TypeOf(tipo1) = gb.Integer Then
Print tipo1
'Llega un momento que tipo1 es un array
Else If TypeOf(tipo1) = gb.Object Then
For Each tipo2 In tipo1
Print tipo2
Next
Endif
Next

End


El tipo Objeto es como un comodín. No hay un tipo Array.

¿ Cómo lo harías vosotros ?.

Bien, vayamos a otra cuestión.

¿ Como es que siendo Variant no puedo hacer algo como esto ?.

lista1 = [1,2,3,4]
lista2 = [5,6,7]

lista1[2] = lista2

Según el error es las dimensiones están definidas.
Es fácil añadir, pero no sustituir. Puedo añadir un array a un array con el método .add, pero no puedo asignar a un elemento que parece de una dimensión, otro de mas dimensiones.

Saludos

Objetivo: Re: Array De Distintos Tipos
Citar:
¿ Cómo harías para visualizar cada elemento del array ?.


Yo lo hago así. Hay otras maneras, pero más sucias.

Citar:
¿ Como es que siendo Variant no puedo hacer algo como esto ?.

lista1 = [1,2,3,4]
lista2 = [5,6,7]

lista1[2] = lista2


Supongo que por la propia naturaleza de los tipos de datos. Un entero, sea o no parte de un array, tiene una existencia en la memoria absolutamente distinta que un array que apunta a otra serie de datos.
Aunque gambas no es excesivamente estricto en la declaración de los datos, el hecho de que haya que declararlos implica que su ubicación en memoria y demás ha de ser resuelta en tiempo de compilación, lo cual impone unos límites a los tejemanejes que puedes hacer después con ellos.

Seguro que Vuott te puede dar una respuesta más concisa.

Perfil MP  
Objetivo: Re: Array De Distintos Tipos
shordi escribió: [Ver mensaje]

Seguro que Vuott te puede dar una respuesta más concisa.


" Si yo tuviera una respuesta por cada problema, yo estaría a enseñar al Sorbona de París. "

(G. de Baskerville en "El nombre de la rosa" - U. Eco)

il-nome-della-rosa


última edición por vuott el Jueves, 25 Septiembre 2014, 11:37; editado 2 veces
Perfil MP  
Objetivo: Re: Array De Distintos Tipos
Lo mismo ni eso...

Perfil MP  
Objetivo: Re: Array De Distintos Tipos
Shell escribió: [Ver mensaje]


Si tengo un array tal como este: [1,2,3,4,[5,6,7] ]
¿ Cómo harías para visualizar cada elemento del array ?.


ehmmm... tu creaste un array de array. Este nuevo vector es el... quinto elemento y tiene indice 4.
Por esto yo haría así:

Public Sub Main()

Dim alista1 As Variant[] = [1, 2, 3, 4]

' añade un array en el array:
alista1.Add([5, 6, 7])

Print alista1[0]
Print alista1[1]
Print alista1[2]
Print alista1[3]
Print alista1[4][0]
Print alista1[4][1]
Print alista1[4][2]

End





Mira por ejemplo eso:
Public Sub Main()

Dim alista1 As Variant[] = [1, 2, 3, 4]

' añade un array en el array:
alista1.Add([5, 6, 7])

Print alista1[0]
Print alista1[1]
Print alista1[2]
Print alista1[3]
Print alista1[4][0]
Print alista1[4][1]
Print alista1[4][2]

' añade un array de array en el array: :-D
alista1.Add([8, 9, [10, 11, 12]])

Print alista1[5][0]
Print alista1[5][1]
Print alista1[5][2][0]
Print alista1[5][2][1]
Print alista1[5][2][2]

End

última edición por vuott el Jueves, 25 Septiembre 2014, 18:32; editado 8 veces
Perfil MP  
Objetivo: Re: Array De Distintos Tipos
Shell escribió: [Ver mensaje]
Bien, vayamos a otra cuestión.

¿ Como es que siendo Variant no puedo hacer algo como esto ?.

lista1 = [1,2,3,4]
lista2 = [5,6,7]

lista1[2] = lista2

Según el error es las dimensiones están definidas.
Es fácil añadir, pero no sustituir. Puedo añadir un array a un array con el método .add, pero no puedo asignar a un elemento que parece de una dimensión, otro de mas dimensiones.


¿Excusa, tu estás diciendo un código asì ?
Public Sub Main()

Dim lista1, lista2 As Variant[]

lista1 = [1, 2, 3, 4]
lista2 = [5, 6, 7]

lista1[2] = lista2

End


Si es este el código, el me funciona.
Por ejemplo:
Public Sub Main()

Dim lista1, lista2 As Variant[]

lista1 = [1, 2, 3, 4]
lista2 = [5, 6, 7]

lista1[2] = lista2

Print lista1[0]
Print lista1[1]
Print lista1[2][0]
Print lista1[2][1]
Print lista1[2][2]
Print lista1[3]

End

última edición por vuott el Jueves, 25 Septiembre 2014, 12:30; editado 3 veces
Perfil MP  
Objetivo: Re: Array De Distintos Tipos
Hola Vuott!.

Ok, luego lo repaso y comento mejor.

En otro mensaje comentare un efecto que he visto en Python, muy curioso con las listas.
Espero hacerlo detalladamente para que lo veáis bien. Es raro de "narices", es algo como infinito.

"Array de array de array..." y sigue y sigue..

Este tipo de datos resulta bastante interesante, pero no se lo rápido que sera eso. tanto array de array tiene que consumir
de memoria y de tiempo lo que no viene en los escritos. Y lioso, bastante.

¿ Cuanto paracetamol os tomáis haciendo esas cosas ?.
Entonces la bolsa con hielos en la cabeza es algo habitual. Y un cubata al lado!. 9beber_1411649984_237358

Bueno, menos cachondeo y seamos serios.

Saludos

Objetivo: Re: Array De Distintos Tipos
Esta discusión de Shell me ha apretado como un... "Python".
Bueno, me dio la ocasión para estudiar cómo leer y escribir en un simple array a través de "Memory Stream" y un Puntero.

He hecho ahora un breve resumen en el WIKI italiano:
http://www.gambas-it.org/wiki/index...i_Memory_Stream

Perfil MP  
Objetivo: Re: Array De Distintos Tipos
Acabo de ver la wiki italiana de gambas, que no había entrado hasta ahora por que yo de italiano ni papa. He visto ahí el trabajo que estás haciendo por difundir gambas.

¡Buen trabajo Vuott! ¡Muchos difusores como tú y el pythón estaría acabado!...

última edición por shordi el Jueves, 25 Septiembre 2014, 17:52; editado 1 vez
Perfil MP  
Objetivo: Re: Array De Distintos Tipos
shordi escribió: [Ver mensaje]
¡Muchos difusores como tú y el pythón estaría acabado!...


Hace falta un pythonero !

Perfil MP  
Ir a la página 1, 2, 3  Siguiente

Página 1 de 3


  
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:: 1.6134s (PHP: -92% SQL: 192%)
Consultas SQL: 49 - Debug off - GZIP Activado