Shell   25-03-2023, 12:36
#1
Buenas!.

En este ejemplo tenemos dos arrays, tabla1 y tabla2.

Vamos a asignar a tabla2 la referencia de tabla1
Anularemos la variable tabla1 y veremos que pasa con tabla2. ¿ Se perderá su referencia ?.
No se impacienten....comienza!!

Código:
Public Sub Ejemplo1()
 
  Dim tabla1 As Integer[]
  Dim tabla2 As Integer[]

  tabla1 = New Integer[100]
  
  MuestraDireccion("tabla1", tabla1)
  tabla2 = tabla1
  MuestraDireccion("tabla2", tabla2)    
  tabla1 = Null 'Hacemos nula
  MuestraDireccion("tabla1", tabla1)
  MuestraDireccion("tabla2", tabla2)    
 
End

Public Sub MuestraDireccion(nombre As String, tabla As Integer[])
 
  Print "La referencia de " & nombre & " es: " & Object.Address(tabla)
 
End

Salida:
 
Cita: 
La referencia de tabla1 es: 55AD39A9A518
La referencia de tabla2 es: 55AD39A9A518
La referencia de tabla1 es: 0
La referencia de tabla2 es: 55AD39A9A518

Tabla2 mantiene su referencia.

Saludos

"El conocimiento es la mejor inversión que se puede hacer" - Abraham Lincoln
vuott   25-03-2023, 16:21
#2
Señalo esta página:

https://www.gambas-it.org/wiki/index.php...bili_array

« Los horizontes perdidos nunca regresan. » (F. Battiato, 1983)

« Las ondas nunca regresan. » (Genesis: Ripples, 1976)

« Vita non suavis esse potest, nec Mors amara. »  (...vuott)
Shell   26-03-2023, 00:23
#3
¿ Y si queremos saber si dos arrays son exactamente iguales ?

¿  Existe algún método ?

Código:
Private t1[3] As Integer
Private t2[3] As Integer

Public Sub Main()
 
  t1 = [1, 2, 3]
  t2 = [1, 2, 3]  
 
  'Referencias distintas, valor falso
  Print t1 = t2
 
  Print Aiguales(t1, t2)
 
End

Public Function Aiguales(at1 As Integer[], at2 As Integer[]) As Boolean
 
  Dim iguales As Boolean
  Dim i As Integer
 
  'Decimos que son iguales desde el principio
  iguales = True
 
  If at1.Length <> at2.Length Then iguales = False
 
  While (iguales And i < at1.Count)
    If at1 = at2 Then
      Inc i
    Else
      iguales = False
    Endif     
  Wend  
  Return iguales
 
End

Salida:
Cita:False
True

En Java existe.

Código:
public class CompararDosTablas {
    public static void main(String[] args) {

        // Dos tablas iguales
        int[] t1 = {7, 9, 20};
        int[] t2 = {7, 9, 20};

        System.out.println(t1 == t2); // Sin embargo muestra false

        // Ya que sus referencias son distintas

        // Dos tablas son iguales si contienen los mismos elementos
        // en el mismo orden

        // Comparamos con el método estático equals
        System.out.println(Arrays.equals(t1, t2)); // muestra true
        
    }
}

Saludos

"El conocimiento es la mejor inversión que se puede hacer" - Abraham Lincoln
  
Usuarios navegando en este tema: 2 invitado(s)
Powered By MyBB, © 2002-2024 MyBB Group.
Made with by Curves UI.