|
Página 1 de 1
|
Similitud De Un Alias De Python Con Gambas
Autor |
Mensaje |
Shell
Analista Programador
Registrado: Marzo 2010
Mensajes: 5278
Edad: 53 Ubicación: Al otro lado de la pantalla
|
Similitud De Un Alias De Python Con Gambas
Hola!.
Una palabra que tambien se usa en Python es "alias". Es muy simple de entender y ver la similitud con Gambas.
Supongamos que llevamos el control de expectativa de vida de distintos países. ( Los datos no sé si son reales ).
En este ejemplo usaremos Canada, EEUU, Mexico
Si pudiéramos mostrar un array de esta forma:
evida = [ ["Canada",76.5 ], ["EEUU", 75.5], [ "Mexico", 72.0 ] ]
Y tambien crear los distintos subarrays
canada = ["Canada",76.5 ]
eeuu = ["EEUU", 75.5]
mexico = [ "Mexico", 72.0 ]
Y ahora en el array principal podíamos tener:
evida = [ canada, eeuu, mexico ]
Cuando asignamos un subarray a una variable, creamos un alias del subarray
Supongamos esté código:
En el primer bucle vemos tanto el país como la edad media de expectativa de vida.
Si luego cambiamos uno de los datos contenido en un subarray
Afectara al array principal de expectativa de vida, que vemos una vez más con el siguiente bucle.
Observando que la edad de expectativa media de vida ha cambiado a 80.0
La salida del ejemplo fue está:
Citar:
Canada 76.5
EEUU 75.5
Mexico 72
Canada 80
EEUU 75.5
Mexico 72
Saludos
=================== Gambas Básico
"No es un bug, es una característica no documentada"
última edición por Shell el Sabado, 26 Septiembre 2015, 12:28; editado 2 veces
|
#1 Sabado, 26 Septiembre 2015, 12:24 |
|
|
Shell
Analista Programador
Registrado: Marzo 2010
Mensajes: 5278
Edad: 53 Ubicación: Al otro lado de la pantalla
|
Re: Similitud De Un Alias De Python Con Gambas
Veamos este ejemplo.
¿ Es lista2 un alias de lista1 ?.
La salida fue está:
Citar:
(Integer[] 0x934b86c) lista1
(Integer[] 0x934bd2c) lista2
(Integer[] 0x934b86c) lista1
(Integer[] 0x934b86c) lista2
1,3,5,12
Todo cambio realizado en lista1 se refleja en lista2, ambos array apuntan a la misma dirección de memoria.
Bien, yo podría no haber inicializado el array lista2. A la hora de mostrar la dirección de memoria donde se encuentra su contenido,
no hubiese mostrado nada. Hubiera sido un array nulo. Por eso lo he inicializado aunque sin contenido.
Saludos
=================== Gambas Básico
"No es un bug, es una característica no documentada"
|
#2 Sabado, 26 Septiembre 2015, 12:52 |
|
|
vuott
Analista Programador
Registrado: Agosto 2013
Mensajes: 2086
Edad: 60 Ubicación:
|
Re: Similitud De Un Alias De Python Con Gambas
¿ Es lista2 un alias de lista1 ?
..." alias " el latin significa: En otro modo..........
... sustancialmente los array son Punteros; y la linea
no hace simplemente "lista2" un otro modo de "lista1", mas asigna el valor de la dirección del area de memoria del array "lista1" al array "lista2", ...como si fueran dos tipos Punteros.
Diferentemente, el metodo .Copy() de un array no asigna el valor de la dirección del area de memoria del array, hace una copia de los valores del array. El otro array, que recibe la copia, apunta a una otra diferente dirección de area de memoria. Es decir que para este secundo array, es reservada una nueva y diferente area de memoria.
Public Sub Main()
Dim x As Integer
Dim lista1, lista3 As Integer[] = [1, 3, 5, 8]
Dim lista2, lista4 As New Integer[]
Print lista1, "lista1"
Print lista2, "lista2"
lista2 = lista1
Print lista1, "lista1"
Print lista2, "lista2";; "<----------"
lista1[2] = 100
For x = 0 To lista2.Max
If x < lista2.Max Then
Print lista2[x]; ",";
Else
Print lista2[x]
Endif
Next
Print
Print "------------------------------------"
Print
Print lista3, "lista3"
Print lista4, "lista4"
lista4 = lista3.Copy(0, lista1.Count)
Print lista3, "lista3"
Print lista4, "lista4";; "<----------"
lista3[2] = 100
For x = 0 To lista4.Max
If x < lista4.Max Then
Print lista4[x]; ",";
Else
Print lista4[x]
Endif
Next
End
última edición por vuott el Sabado, 26 Septiembre 2015, 20:14; editado 2 veces
|
#3 Sabado, 26 Septiembre 2015, 16:58 |
|
|
Shell
Analista Programador
Registrado: Marzo 2010
Mensajes: 5278
Edad: 53 Ubicación: Al otro lado de la pantalla
|
Re: Similitud De Un Alias De Python Con Gambas
Citar:
..." alias " el latin significa: En otro modo..........
No es exactamente lo mismo. Por ejemplo,Shell es el alias de...Vuott es el alias de....:-D
Si por ejemplo fuera una chica que es un poco "casquivana". Pues el alias puede que fuera el
"nombre de guerra".
Alias también creo que se usa en temas de investigación policial, etc,etc.
Vaya, tengo que continuar después el mensaje...mmm..y si uso guardar el mensaje, ¿ que pasara ?.
Bueno luego lo termino.
=================== Gambas Básico
"No es un bug, es una característica no documentada"
|
#4 Sabado, 26 Septiembre 2015, 19:45 |
|
|
Shell
Analista Programador
Registrado: Marzo 2010
Mensajes: 5278
Edad: 53 Ubicación: Al otro lado de la pantalla
|
Re: Similitud De Un Alias De Python Con Gambas
Citar:
...sustancialmente los array son Punteros;
Los arrays son objetos...
Citar:
simplemente "lista2" un otro modo de "lista1", mas asigna el valor de la direccón del area de memoria del array "lista1" al array "lista2", ...como si fueran dos tipos Punteros.
En el fondo, es lo que es. Pero no puedes decir eso a un programador de basic. Que le dices puntero y le da un "jamacuco".
Sobre todo por lo complejo que es el tema. Y en algunos lenguajes que usan punteros, son más complicados en unos que en otros.
Por ejemplo C y Pascal.
Tu estás acostumbrado por que vienes de C, pero muchos de los que estamos aquí que venimos de basic, nos cuesta entender el tema de punteros.
Y puede ser bastante importante conocerlo, pero claro como no se suele usar en basic a menos que sea por temas "especiales".
Pues nos parece como si fuera algo extraño. ( Aunque en el fondo sabemos que es una variable que apunta a una dirección de memoria )
En Python no existen los punteros, pero como ves hay una similitud.
Citar:
Diferentemente, el metodo .Copy() de un array no asigna el valor de la direccón del area de memoria del array, hace una copia de los valores del array. El otro array, que recibe la copia, apunta a una otra diferente direccón de area de memoria. Es decir que para este secundo array, es reservada una nueva y diferente area de memoria.
No, no es eso lo que quiero.
Lo que quiero es que se vea que el lugar donde se almacena el contenido es la misma dirección.
Es casi a lo que hemos estado haciendo en funciones y parámetros.
A veces hay que tener cuidado con esa forma de apuntar a la misma dirección y usar el método copy.
Saludos
=================== Gambas Básico
"No es un bug, es una característica no documentada"
|
#5 Sabado, 26 Septiembre 2015, 20:15 |
|
|
vuott
Analista Programador
Registrado: Agosto 2013
Mensajes: 2086
Edad: 60 Ubicación:
|
Re: Similitud De Un Alias De Python Con Gambas
No, no es eso lo que quiero.
Lo se, yo estaba haciendo un razonamiento un po' más amplio.
Saludos.
última edición por vuott el Sabado, 26 Septiembre 2015, 20:22; editado 3 veces
|
#6 Sabado, 26 Septiembre 2015, 20:16 |
|
|
|
Temas parecidos
Temas parecidos
Tema |
Autor |
Foro |
Respuestas |
último mensaje |
|
Alias
|
Shell |
Bases de Datos |
13 |
Martes, 05 Julio 2016, 19:17 Shell |
|
[Python] Por Qué Python Debería Ser El P...
|
Shell |
Python |
2 |
Martes, 04 Julio 2017, 21:01 vuott |
|
[Python] Guido Van Rossum Abandona La Supe...
|
Shell |
Python |
5 |
Miercoles, 10 Octobre 2018, 08:59 Shell |
|
Comandos De Linux, Abreviados, Alias
|
Shell |
Mundo Linux |
6 |
Sabado, 17 Noviembre 2018, 11:51 Shell |
|
Página 1 de 1
|
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
|
|
|
|
|