Al fin comencé una nueva implementación de variables y su alcance en el lenguaje Mass. Mi idea es:
– Tener variables locales
– Sin necesidad de declararlas explícitamente
– Acceso al alcance “de afuera” si es necesario
La idea base es:
– Cualquier asignación a variable involucra al alcance local
Es decir, que si asigno
a = 3
en una función, esto refiere a una variable local a, en esa función. No importa si hay una variable a, externa a la función
Ver como ejemplo
https://github.com/ajlopez/Mass/blob/master/Src/Mass.Core.Tests/MachineFiles/Local.ms
# file variable a = 1 define foo() a = 2 # local variable end foo()
La primer variable a es una variable del archivo en proceso. La variable asignada en la función foo, es una variabla local a ese entorno de función, y es distinta de la variable “de afuera”.
En cambio, si no asignamos la variable, y solamente la consultamos, no queda como variable local. Ejemplo:
https://github.com/ajlopez/Mass/blob/master/Src/Mass.Core.Tests/MachineFiles/Scope.ms
# file variable a = 1 define foo() a # access file variable end foo()
En este caso, la función foo devuelve el valor de a “de afuera”, pues esa variable no ha sido asignada en la función en el momento de evaluar el valor de retorno.
¿Cómo modificar una variable “de afuera”, que no sea local? Bien, tema para próximo post. La idea: acceder al valor de una variable no local, tiene que ser implícito, sin necesidad de declarar nada adicional. PERO MODIFICAR su valor debe ser explícito: debemos poner algo para que se entienda “queremos modificar el valor de una variable no local”.
Nos leemos!
Angel “Java” Lopez
http://www.ajlopez.com
http://twitter.com/ajlopez