Comunidad de diseño web y desarrollo en internet online

Paso de variables a funciones por valor y referencia

Citar            
MensajeEscrito el 09 Oct 2006 03:38 pm
En C++ si quieres pasar un parametro por referencia tienes que usar el '&':

Código :

void funcion(int& a) 
{...}


De esta forma, si modificas 'a' dentro de la funcion tambien modificas la variable que has pasado como parametro a la hora de llamar la funcion. Mi problema esta en que tengo unos Objetos que quiero que se modifiquen a base de funciones, como por ejemplo:

Código :

//para intercambiar dos objetos
function intercambio(v1:Object, v2:Object) {
   var temporal:Object = v1;
   v1 = v2;
   v2 = temporal;
}
var a:Object = new Object();
var b:Object = new Object();
a = "1";
b = "2";
trace("a = " + a);
trace("b = " + b); 
// a = 1 y b = 2
intercambio(a, b);
trace("a = " + a);
trace("b = " + b);
// a = 1 y b = 2 tambien


Tenia entendido que Java automaticamente pasa por copia cuando son estructuras basicas, como enteros y boleanos, y por referencia estructuras mas complejas como Arrays. Pense que aqui pasaria algo parecido al ser Objetos, pero no. Como puedo solucionar esto?

Gracias de antemano.

Por dablak

13 de clabLevel



Genero:Masculino  

Barcelona

firefox
Citar            
MensajeEscrito el 11 Oct 2006 05:24 pm
quizas utilizando una variable del tipo global
_global.variable
en ese caso no la pasas como parámetro.-

Por micheloud

341 de clabLevel



 

Misiones, Argentina

firefox
Citar            
MensajeEscrito el 12 Oct 2006 10:19 am
Pero si quiero hacer una clase eso solo me sirve para una sola variable.

Por dablak

13 de clabLevel



Genero:Masculino  

Barcelona

firefox
Citar            
MensajeEscrito el 12 Oct 2006 04:16 pm
ehm, en flash, también los objetos complejos se pasan por referencia(como apuntador), tu problema es que quieres remplazar una apuntador por otro, y eso no es tan fácil en Flash. Pero mira aqui modifico un Array, pasado por referencia:

Código :

function g0g0(ext:Object):Void{
   ext.push("euh!!");
}
var bot:Array = new Array();
trace("Antes: " + bot);
g0g0(bot);
trace("Despues: " +bot);


^^

Por Dano

BOFH

4273 de clabLevel

14 tutoriales
4 articulos
10 ejemplos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Lugar estratégico para vigilarte

firefox
Citar            
MensajeEscrito el 19 Oct 2006 01:33 pm
Y que deberia hacer para por ejemplo intercambiar el contenido de dos arrays con una funcion? cambiando los elementos uno a uno usando las referencias? o hay un metodo mas directo?

Por dablak

13 de clabLevel



Genero:Masculino  

Barcelona

firefox

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.