En programación informática , el ámbito es un contexto que engloba valores y expresiones . El operador de resolución de ámbito ayuda a identificar y especificar el contexto al que se refiere 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, especialmente en aquellos influenciados por Modula-3 (como Python y Go ), los módulos son objetos. , y la resolución de ámbito dentro de ellos es un caso especial del acceso habitual a los miembros de un objeto, por lo que se utiliza el operador de método habitual para la resolución de ámbito. Otros lenguajes, como C++ y Ruby , presentan tanto resolución de ámbito como acceso a métodos, que interactúan de diversas maneras; véanse los ejemplos a continuación.
C++
clase A { público : static int i ; // el ámbito de i es A };espacio de nombres B { int c = 2 ; } // espacio de nombres Bint A :: i = 4 ; // el operador de ámbito se refiere al entero i declarado en la clase A int x = B :: c ; // el operador de ámbito 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 [ 1 ] de נקודתיים, pronunciada [ nekudaˈtajim ] ), que significa “doble dos puntos ” en hebreo. [ 2 ] [ 3 ]
El nombre "Paamayim Nekudotayim" se introdujo en el motor Zend Engine 0.5 desarrollado en Israel [ 4 ] y utilizado en PHP 3. Inicialmente, el mensaje de error simplemente usaba el nombre del token interno , lo que causaba confusión a 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, se esperaba '::' (T_PAAMAYIM_NEKUDOTAYIM)A partir de PHP 8, el nombre hebreo se ha eliminado del mensaje de error: [ 5 ] [ 6 ]
$ 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 1Rubí
En Ruby , la resolución del ámbito se puede especificar utilizando la palabra clave module.
Módulo Ejemplo Versión = 1.0clase << self # Estamos accediendo a la clase singleton del módulo def hello ( who = "world" ) "Hola #{ who } " end end end #/EjemploEjemplo :: hello # => "Hola mundo" Ejemplo . hello "hacker" # => "Hola hacker"Ejemplo :: Versión # => 1.0 Ejemplo . Versión # NoMethodError# Esto ilustra la diferencia entre el operador de mensaje (.) y el operador de ámbito en Ruby (::) # Podemos usar tanto ::hello como .hello, porque hello es parte del ámbito de Example y porque Example # responde al mensaje hello. # # No podemos hacer lo mismo con ::Version y .Version, porque Version está dentro del ámbito de Example, pero # Example no puede responder al mensaje Version, ya que no hay ningún método con el que responder.El alcance también se ve afectado por los símbolos que preceden a los nombres de las variables:
- "
$- variable global - "
@" - variable de instancia deself - "
@@- variable de clase - Sin sigilo, minúsculas ni guiones bajos: variable local o método
- Sin sigilo, mayúsculas - constante
Pitón
Python no tiene un operador de resolución de ámbito dedicado. La búsqueda de nombres sigue la regla LEGB (Local, Enclosed, Global, Built-in). El acceso a los atributos de módulos, clases y objetos se realiza mediante el operador punto (.). [ 7 ]
importar matemáticasx = 5 # variable globaldef exterior ():x = 10 # alcance envolventedefinición interna ():print ( x ) # se resuelve en el ámbito que lo contieneinterno ()exterior ()imprimir ( math.pi ) # acceso a atributos usando el operador puntoReferencias
- ↑ "WTF Is T_paamayim_nekudotayim (2013) | Hacker News" . 30 de enero de 2025. Archivado del original el 30 de enero de 2025. Consultado el 17 de mayo de 2025 .
- ↑ "WTF Is T_paamayim_nekudotayim (2013) | Hacker News" . news.ycombinator.com . Archivado del original el 30 de enero de 2025. Consultado el 17 de mayo de 2025 .
- ↑ smog_alado (24 de abril de 2021). " [ PHP ] T_PAAMAYIM_NEKUDOTAYIM, una historia de estancamiento de nerds" . r/HobbyDrama . Consultado el 17 de mayo de 2025 .
- ↑ "Operador de resolución de ámbito" . Manual de PHP 5. Consultado el 9 de agosto de 2007 .
- ↑ "PHP: rfc:rename-double-colon-token" . wiki.php.net . Consultado el 17 de mayo de 2025 .
- ↑ "2T8qQ - creado en 3v4l.org" . 3v4l.org . 10-09-2013 . Consultado el 17-05-2025 .
- ↑ "4. Modelo de ejecución" . Documentación de Python . Consultado el 15 de marzo de 2026 .
Enlaces externos
- Glosario de C++ de Bjarne Stroustrup
- Operadores (programación)