Jump to content

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

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

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

class A {
public:
    static int i; // scope of i is A
};

namespace B {
    int c = 2;
} // namespace B

int A::i = 4; // scope operator refers to the integer i declared in the class A
int x = B::c; // scope operator refers to the integer c declared in the namespace B

В PHP оператор разрешения области также называется Paamayim Nekudotayim ( на иврите : двойное двоеточие , произносится [paʔamajim nekudoˈtajim] , второе слово представляет собой разговорное искажение произносится [некудатаджим] ), что на иврите означает «двойное двоеточие ».

Название «Паамаим Некудотаим» было введено в разработанный Израилем [1] Zend Engine 0.5, используемый в PHP 3 . Хотя это сбивает с толку многих разработчиков, не говорящих на иврите, оно все еще используется в PHP 7, как показано в этом примере сообщения об ошибке:

$ php -r ::
Parse error: syntax error, unexpected T_PAAMAYIM_NEKUDOTAYIM

Подобная ошибка также может возникнуть, если оператор разрешения области отсутствует. Например, попытка проверить, является ли константа пустой(), вызывает следующую ошибку:

$ php -r 'define("foo", "bar"); if (empty(foo)) echo "empty";'
Parse error: syntax error, unexpected ')', expecting T_PAAMAYIM_NEKUDOTAYIM

Начиная с PHP 5.4, сообщения об ошибках, связанные с оператором разрешения области, по-прежнему включают это имя, но его значение несколько прояснено:

$ php -r ::
Parse error:  syntax error, unexpected '::' (T_PAAMAYIM_NEKUDOTAYIM)

Существуют и другие менее очевидные способы вызвать ошибку, например, попытка использовать следующее недопустимое выражение PHP:

$ php -r static const '$a=1'
Parse error:  syntax error, unexpected end of file, expecting :: (T_PAAMAYIM_NEKUDOTAYIM)

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

module Example
  Version = 1.0

  class << self # We are accessing the module's singleton class
    def hello(who = "world")
      "Hello #{who}"
    end
  end
end #/Example

Example::hello # => "Hello world"
Example.hello "hacker" # => "Hello hacker"

Example::Version # => 1.0
Example.Version # NoMethodError

# This illustrates the difference between the message (.) operator and the scope operator in Ruby (::)
# We can use both ::hello and .hello, because hello is a part of Example's scope and because Example
# responds to the message hello.
#
# We can't do the same with ::Version and .Version, because Version is within the scope of Example, but
# Example can't respond to the message Version, since there is no method to respond with.

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

  1. ^ «Оператор разрешения масштаба» . Руководство по PHP 5 . Проверено 9 августа 2007 г.
[ редактировать ]
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: f419dfaca3fddcb3f04a4ecdce898b28__1717503540
URL1:https://arc.ask3.ru/arc/aa/f4/28/f419dfaca3fddcb3f04a4ecdce898b28.html
Заголовок, (Title) документа по адресу, URL1:
Scope resolution operator - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)