stringtranslate.com

Оператор разрешения области действия

В программировании область действия — это охватывающий контекст, в котором связаны значения и выражения . Оператор разрешения области действия помогает идентифицировать и указать контекст, на который ссылается идентификатор , в частности, указывая пространство имен или класс . Конкретные варианты использования различаются в зависимости от языка программирования в зависимости от понятий области действия. Во многих языках оператор разрешения области действия записывается как ::.

В некоторых языках, особенно в тех, которые повлияли на Modula-3 (включая Python и Go ), модули являются объектами , а разрешение области действия внутри модулей является особым случаем обычного доступа к членам объекта, поэтому .для разрешения области действия используется обычный оператор метода. Другие языки, особенно C++ и Ruby , имеют как разрешение области действия, так и доступ к методу, которые взаимодействуют различными способами; см. примеры ниже.

С++

class A { public : static int i ; // областью действия i является A };      пространство имен B { int c = 2 ; } // пространство имен B       int A :: i = 4 ; // оператор области видимости ссылается на целое число i, объявленное в классе A int x = B :: c ; // оператор области видимости ссылается на целое число c, объявленное в пространстве имен B        

PHP

В PHP оператор разрешения области также называется Paamayim Nekudotayim ( иврит : פעמיים נקודותיים , произносится [paʔaˈmajim nekudoˈtajim] , второе слово — это разговорное искажение נקודתיים, произносится [nekudaˈtajim] ), что на иврите означает «двойное двоеточие ».

Имя "Paamayim Nekudotayim" было введено в разработанном Израилем [1] Zend Engine 0.5, используемом в PHP 3. Первоначально сообщение об ошибке просто использовало внутреннее имя токена для ::, T_PAAMAYIM_NEKUDOTAYIMчто вызывало путаницу у неговорящих на иврите. Это было разъяснено в PHP 5.4, как показано ниже.

$ php  -r  :: Ошибка синтаксического анализа: синтаксическая ошибка, неожиданный '::' (T_PAAMAYIM_NEKUDOTAYIM)

Начиная с PHP 8, еврейское имя было удалено из сообщения об ошибке.

$  php  -r  ::Ошибка синтаксического анализа: синтаксическая ошибка, неожиданный токен "::", ожидается конец файла в коде командной строки в строке 1


Рубин

В Ruby разрешение области действия можно задать с помощью ключевого слова module.

Пример модуля Версия = 1 . 0     class << self # Мы обращаемся к синглтон-классу модуля def hello ( who = "world" ) "Hello #{ who } " end end end #/Пример           Пример :: hello # => "Привет, мир" Пример . hello "хакер" # => "Привет, хакер"   Пример :: Версия # => 1.0 Пример . Версия # NoMethodError  # Это иллюстрирует разницу между оператором сообщения (.) и оператором области действия в Ruby (::) # Мы можем использовать как ::hello, так и .hello, поскольку hello является частью области действия Example, и поскольку Example # отвечает на сообщение hello. # # Мы не можем сделать то же самое с ::Version и .Version, поскольку Version находится в области действия Example, но # Example не может ответить на сообщение Version, поскольку нет метода для ответа.

На область действия также влияют сигилы , которые предшествуют именам переменных:

Ссылки

  1. ^ "Оператор разрешения области действия". Руководство по PHP 5. Получено 2007-08-09 .

Внешние ссылки