En programación informática , el ámbito es un contexto envolvente donde se asocian valores y expresiones . El operador de resolución de ámbito ayuda a identificar y especificar el contexto al que hace referencia un identificador , en particular especificando un espacio de nombres o una clase . Los usos específicos varían en los distintos lenguajes de programación con las nociones de ámbito. En muchos lenguajes, el operador de resolución de ámbito se escribe ::.
En algunos lenguajes, en particular aquellos influenciados por Modula-3 (incluidos Python y Go ), los módulos son objetos y la resolución de alcance dentro de los módulos es un caso especial del acceso habitual a miembros de objetos, por lo que .se utiliza el operador de método habitual para la resolución de alcance. Otros lenguajes, en particular C++ y Ruby , presentan tanto la resolución de alcance como el acceso a métodos, que interactúan de diversas maneras; consulte los ejemplos a continuación.
C++
clase A { public : static int i ; // el alcance de i es A };
espacio de nombres B { int c = 2 ; } // espacio de nombres B
int A :: i = 4 ; // el operador de alcance se refiere al entero i declarado en la clase A int x = B :: c ; // el operador de alcance se refiere al entero c declarado en el espacio de nombres B
PHP
En PHP , el operador de resolución de alcance también se llama Paamayim Nekudotayim ( hebreo : פעמיים נקודותיים , pronunciado [paʔaˈmajim nekudoˈtajim] , la segunda palabra es una corrupción coloquial de נקודתיים, pronunciada [nekudaˈtajim] ), que significa “dos dos puntos ” en hebreo.
El nombre "Paamayim Nekudotayim" fue introducido en el motor Zend 0.5 desarrollado por Israel [1] y utilizado en PHP 3. Inicialmente, el mensaje de error simplemente utilizaba el nombre del token interno para , lo que causaba confusión para quienes no hablaban hebreo. Esto se aclaró en PHP 5.4 como se muestra a continuación.
::T_PAAMAYIM_NEKUDOTAYIM
$ php -r ::
Error de análisis: error de sintaxis, '::' inesperado (T_PAAMAYIM_NEKUDOTAYIM)
A partir de PHP 8, el nombre hebreo se ha eliminado del mensaje de error.
$ php -r ::
Error de análisis: error de sintaxis, token inesperado "::", se esperaba el final del archivo en el código de la línea de comandos en la línea 1
Rubí
En Ruby , la resolución del alcance se puede especificar utilizando la palabra clave del módulo.
Módulo Ejemplo Versión = 1 . 0
clase << self # Estamos accediendo a la clase singleton del módulo def hello ( who = "world" ) "Hola #{ who } " end end end #/Ejemplo
Ejemplo :: hola # => "Hola mundo" Ejemplo ::. hola "hacker" # => "Hola hacker"
Ejemplo :: Versión n.° => 1.0 Ejemplo . Versión n .° NoMethodError
# Esto ilustra la diferencia entre el operador de mensaje (.) y el operador de alcance en Ruby (::)
# Podemos usar tanto ::hello como .hello, porque hello es parte del alcance de Example y porque Example
# responde al mensaje hello.
#
# No podemos hacer lo mismo con ::Version y .Version, porque Version está dentro del alcance de Example, pero
# Example no puede responder al mensaje Version, ya que no hay un método para responder.
El alcance también se ve afectado por los sigilos que preceden a los nombres de las variables:
- "
$" - variable global - "
@" - variable de instancia deself - "
@@" - variable de clase - Sin sigilo, minúsculas o guiones bajos: variable local o método
- Sin sigilo, mayúsculas - constante
Referencias
- ^ "Operador de resolución de alcance". Manual de PHP 5. Consultado el 9 de agosto de 2007 .
Enlaces externos
- Glosario de C++ de Bjarne Stroustrup