Operador de resolución de alcance
En programación informática, el ámbito es un contexto que encierra y en el que 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, cuentan con resolución de alcance y acceso a métodos, que interactúan de diversas maneras; consulte los ejemplos a continuación.
C++
clase A {}público: estática int i; // alcance de i es A};namespace B {} int c = 2;} // namespace Bint A::i = 4; // operador de alcance se refiere al entero que declaró en la clase Aint x = B::c; // operador de alcance se refiere al entero c declarado en el espacio de nombres BPHP
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 puntos” en hebreo.
El nombre "Paamayim Nekudotayim" fue introducido en el motor Zend 0.5 desarrollado por Israel y utilizado en PHP 3. Inicialmente, el mensaje de error simplemente utilizaba el nombre de token interno para ::, T_PAAMAYIM_NEKUDOTAYIM, lo que causaba confusión para quienes no hablaban hebreo. Esto se aclaró en PHP 5.4 como se muestra a continuación.
$ php -r ::
Error de parse: 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 parse: error de sintaxis, token inesperado ":", esperando el final del archivo en el código de línea de comandos en la línea 1
Ruby
En Ruby, la resolución del alcance se puede especificar mediante la palabra clave module.
módulo Ejemplo Versión = 1.0 clase c) c) auto # Estamos accediendo a la clase de singleton del módulo def Hola.()quién = "mundo") "Hola" #{quién}" final finalfinal #/ExampleEjemplo::Hola. # = Conf "Hola mundo"Ejemplo.Hola. "hacker" # = Conf "Hola hacker"Ejemplo::Versión # = Conf 1.0Ejemplo.Versión # NoMethodError# Esto ilustra la diferencia entre el operador del mensaje (.) y el operador de alcance en Ruby (:)# Podemos utilizar ambos:hello y.hello, porque el hola es parte del alcance del Ejemplo y porque Ejemplo# responde al mensaje hola.## No podemos hacer lo mismo con:Versión y. Versión, porque la versión está dentro del alcance del Ejemplo, pero# Ejemplo no puede responder a la versión del mensaje, ya que no hay método con el que responder.El alcance también se ve afectado por los sigilos que preceden a los nombres de las variables:
- "
$" - variable global - "
@" - variable de instanciaself - "
@@" - variable de clase - Sin sigil, maletín o subrayado - variable o método local
- Sin sigil, maleta superior - constante
Referencias
- ^ "Operador de Resolución de Resoluciones". PHP 5 Manual. Retrieved 2007-08-09.
Enlaces externos
- Glosario C+++ de Bjarne Stroustrup