Comunidad Gambas-es
Accesibilidad de variable, alcance - Versión para impresión

+- Comunidad Gambas-es (https://gambas-es.org)
+-- Foro: Gambas (https://gambas-es.org/forum-3.html)
+--- Foro: General (https://gambas-es.org/forum-4.html)
+--- Tema: Accesibilidad de variable, alcance (/thread-1344.html)



Accesibilidad de variable, alcance - Shell - 03-05-2023

Buenas!.

En dos códigos posteados por Cogier no declara el alcance de la variable.
La primera vez que seleccione el código y lo pegué  en el editor, pensé, aquí falta algo. Si es private o públic la variable.

Ejemplo:

Código:
distancia As Float

Private alcance As Float


Public Sub Form_Open()

 

End

¿ Desde que versión de Gambas soporta está característica ?. ( No sé si esto lo va a soportar versiones muy anteriores ).
Había visto la declaración automática de variables locales, pero que no se le diga directamente al editor cual es el alcance, no.
Por defecto es global, claro.

Saludos


RE: Accesibilidad de variable, alcance - cogier - 04-05-2023

En los 2 ejemplos que he puesto, las variables son "Private" por defecto y no "Global".


RE: Accesibilidad de variable, alcance - Shordi - 04-05-2023

Nunca se me ocurrió declarar una variable sin determinar su visibilidad. Curioso que el compilador lo permita. Habría que comprobar si da el mismo ámbito a la variable así declarada según el sitio donde se declare, en la cabecera o dentro de un procedimiento o función.

Saludos


RE: Accesibilidad de variable, alcance - Shell - 04-05-2023

(04-05-2023, 11:46)cogier escribió: En los 2 ejemplos que he puesto, las variables son "Private" por defecto y no "Global".

Te adjunto lo que dice el editor.

[Imagen: j3lYW2q.png]

En Gambas ya hace tiempo se decía que no tenía variables "globales".
Una variable global es aquella que se encuentra fuera de los procedimientos y funciones que pertenecen a una clase y son comunes
a todo la clase de ese código. ( Algunos dicen script ).

En Python cuando se quiere cambiar su valor dentro de un procedimiento se añade la palabra global.
Ejemplo: global distancia

¿ Cómo definirías el alcance de esas variables que el editor las nombra como globales ?.
( Tiene que haber una referencia en el foro de Gambas.es sobre todo el antiguo ).
 

(04-05-2023, 12:06)Shordi escribió: Habría que comprobar si da el mismo ámbito a la variable así declarada según el sitio donde se declare, en la cabecera o dentro de un procedimiento o función.

El editor cuando es una variable local, no tienes por que declarar, lo puede hacer automáticamente.
En Gambas te avisaría el editor en el caso de que uses una variable local que se llame igual que una "global" ( perdón, es que no sé como llamarla ).

Saludos


RE: Accesibilidad de variable, alcance - cogier - 04-05-2023

Así es como yo entiendo la cuestión.  Una variable declarada en la parte superior de una clase, no en un procedimiento o subrutina, es global dentro de esa clase si es 'Private' y global para todo el programa si es 'Public'.


RE: Accesibilidad de variable, alcance - Shordi - 04-05-2023

Cita:Así es como yo entiendo la cuestión.  Una variable declarada en la parte superior de una clase, no en un procedimiento o subrutina, es global dentro de esa clase si es 'Private' y global para todo el programa si es 'Public'.
No exactamente. Una variable 'Public' es accesible a todos los otros objetos que tengan una referencia al objeto donde se declara. Si no tienen tal referencia a dicha instancia no pueden acceder a ella.

Saludos


RE: Accesibilidad de variable, alcance - Shell - 04-05-2023

Shordi:

No me parece mal la explicación de Cogier. Usa la palabra global (private) como algo común a una parte y global (públic) como común a toda la aplicación.

Otros llaman a una variable ( que para nosotros es global a un formulario, modulo, clase ) como local a ese lugar (un todo en ese sitio ).

- Variables con ámbito a un procedimiento (Sub), a función (Function).
- Variables con ámbito en el módulo o la clase de formulario.
- Variables con ámbito a todos los módulos o todas las clases del programa.

Variables locales, de clase y globales en Visual Basic. Concepto

Para nosotros no es nada nuevo, es un tecnicismo.

Para puntualizar.

[Imagen: aIgJpZ5.png]

Saludos