Me despisté y creé una variable global con el mismo nombre que el parámetro de una función que tenía creada con resultados catastróficos hasta que me di cuenta.
¿No debería el compilador comprobar la duplicidad de las globales con los parámetros de una función?
Saludos,
hola, no, porque es perfectamente valido tener de nombre una variable parametro como nombre de una global... lo que prevalece ahi es el ambito... el ambito mas chico se aisla del mas amplio, por decirlo de alguna manera... y la global deja de ser visible para la funcion y el parametro es el que prevalece para esa funcion.
¿Esto es realmente así? :|
Creo recordar haber tenido problemas compilando con variables privadas que tenían el mismo nombre que variables globales.
De hecho da problemas porque la variable global toma el valor del valor del parámetro de función con el mismo nombre.
Quote from: warrior_rockk on September 15, 2014, 03:06:24 PM
De hecho da problemas porque la variable global toma el valor del valor del parámetro de función con el mismo nombre.
es correcto lo que dices, eso es un bug...
import "mod_say";
global
string lala = "global";
end
process param_lala(lala)
begin
say("param :"+lala);
end
process global_lala()
begin
say("global :"+lala);
end
process private_lala()
private
string lala = "private";
begin
say("private :"+lala);
end
process local_lala()
local
string lala = "local";
begin
say("local :"+lala);
end
process local2_lala()
local
string lala;
begin
lala = "local2";
say("local2 :"+lala);
end
process main()
begin
say ("main :" + lala);
param_lala("param");
say ("main :" + lala);
private_lala();
say ("main :" + lala);
global_lala();
say ("main :" + lala);
local_lala();
say ("main :" + lala);
local2_lala();
say ("main :" + lala);
end
hay un bug... cuando es parametro afecta la global... en los demas casos se comporta bien... pero un parametro es una privada/local/publica de una funcion/proceso... no puede ser una global...
lo fixeare en bennugd2... por el momento evita usar parametros que se llamen igual a una global.
gracias.
Quote from: PiXeL on September 15, 2014, 02:47:36 PM
¿Esto es realmente así? :|
Creo recordar haber tenido problemas compilando con variables privadas que tenían el mismo nombre que variables globales.
privadas no puede ser... es muy raro... pero si con parametros.... mira el ejemplo...
gracias
Gracias Splinter! ;)
de nada, gracias a ti.