﻿id	summary	reporter	owner	description	type	status	priority	milestone	component	version	severity	resolution	keywords	cc
825	How to access global objects	pgea@…	Víctor de Buen Remiro	"Aunque dentro de la filosofía de programación usando !NameBlocks, esto no es una cosa que debería ocurrir, nos encontramos en ocasiones con la necesidad de acceder a un objeto que está en el ""espacio de nombres"" global.

Por ejemplo, nos encontramos con esa dificultad cuando ya hay un objeto con el mismo nombre en el espacio local de la llamada.

{{{
Real A = 1;
Real {
  Real A = 2;
  Eval(""A"") // ó Find(""A"")
};
}}}

Esto suele ocurrir debido a la costumbre de referirse a un objeto mediante una expresión TOL con la llamada al objeto. El objeto luego se obtiene mediante un Eval de dicha expresión. Esta forma de referirse a un objeto es muy común en el almacenamiento en base de datos.

El problema surge cuando esa evaluación se hace dentro de un contexto (de llamadas a funciones) donde existe una objeto con el mismo nombre que uno de la expresión que se espera global.
Y claro no es fácil evitar usar cualquier nombre que a otro usuario se le haya ocurrido utilizar.

Este problema se puede eliminar ubicando cada cosa en su espacio de nombres correspondiente:

{{{
NameBlock MiProjecto = [[
  Real A = 1
]];
Real {
  Real A = 2;
  Eval(""MiProjecto::A"")
};
}}}

Sin embargo no siempre se hace así.

Mi pregunta es si existe o podría existir alguna manera de obtener un objeto global. Algo como {{{GlobalEval(""A"")}}} o {{{Eval(""::A"")}}} u otra alternativa.


"	task	closed	highest	OOP Implementation	Kernel	head	major	fixed		
