Alcance (scope)

Scope se refiere al alcance o visibilidad de las variabels. Diferentes tipos de variables tienen diferentes reglas de alcance. Vamos a hablar principalmente de dos tipos: variables globales y variables locales.

Alcance global y variables globales

Comenzamos con el alcance que es usado con menor frecuencia pero que necesitas tener presente: el alcance global (global scope), que cubre el programa entero. El alcance global es terreno de las variables globales. Estas se distinguen porque comienzan con el símbolo de dolar ($) y están disponibles en cualquier lugar de tu programa. Las variables globales nunca están fuera del alcance. Sin embargo, son utilizadas muy poco por los programadores expertos (excepto, quizá, por unas pocas de las que ya incluye Ruby).

Variables globales incluídas en Ruby

El intérprete de Ruby comienza con un número bastante grande de variables globales ya inicializadas. Estas variables guardan información que puede ser usada en cualquier lugar de tu programa. Por ejemplo, la variable global $0 contiene el nombre del archivo que ruby está ejecutando. La variable $: (un signo de dolar seguido de dos puntos) contiene los directorios en los que Ruby busca librerías para cargar. $$ contiene el id del proceso Ruby.

Alcance local (local scope)

Nota: No te preocupes si no entiendes muy bien todo esto por ahora.

Al observar un programa escrito en Ruby, puedes identificar en dónde comienzan y terminan los alcances locales basándote en unas cuantas reglas:

  • El nivel superior (fuera de cualquier bloque de definición) tiene su propio alcance.
  • Cada bloque de definición de una clase o un módulo tiene su propio alcance local, incluso definiciones de clases o módulos anidadas.
  • Las definiciones de métodos (def) tienen también su propio alcance local.