Shell   03-05-2023, 22:42
#1
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

"El conocimiento es la mejor inversión que se puede hacer" - Abraham Lincoln
cogier   04-05-2023, 11:46
#2
En los 2 ejemplos que he puesto, las variables son "Private" por defecto y no "Global".
Shordi   04-05-2023, 12:06
#3
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

No podemos regresar
Shell   04-05-2023, 14:41
#4
(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
Última modificación: 04-05-2023, 14:43 por Shell.

"El conocimiento es la mejor inversión que se puede hacer" - Abraham Lincoln
cogier   04-05-2023, 16:52
#5
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'.
Shordi   04-05-2023, 17:30
#6
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

No podemos regresar
Shell   04-05-2023, 18:56
#7
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

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