Provozovatel řešení rozsahu - Scope resolution operator
tento článek potřebuje další citace pro ověření.Prosince 2018) (Zjistěte, jak a kdy odstranit tuto zprávu šablony) ( |
v programování, rozsah je uzavírající kontext, kde hodnoty a výrazy jsou spojeny. The operátor rozlišení oboru pomáhá identifikovat a specifikovat kontext, do kterého identifikátor odkazuje, zejména specifikací a jmenný prostor. Konkrétní použití se u různých liší programovací jazyky s pojmy scoping. V mnoha jazycích je napsán operátor rozlišení oboru ::
.
V některých jazycích, zejména těch ovlivněných Modula-3 (počítaje v to Krajta a Jít ), moduly jsou předměty a rozlišení oboru v rámci modulů je speciální případ obvyklého přístupu členů objektu, tedy obvyklý operátor metody .
se používá pro rozlišení rozsahu. Jiné jazyky, zejména C ++ a Rubín, obsahují jak rozlišení rozsahu, tak přístup k metodám, které interagují různými způsoby; viz příklady níže.
C ++
třída A {veřejnost: statický int i; // rozsah A};jmenný prostor B { int j = 2;} // jmenný prostor Bint A::i = 4; // operátor oboru odkazuje na celé číslo i deklarované ve třídě A.int X = B::j; // rozsahový operátor odkazuje na celé číslo j deklarované v oboru názvů B.
PHP
v PHP se také nazývá operátor rozlišení oboru Paamayim Nekudotayim (hebrejština: פעמיים נקודותיים, výrazný[paʔaˈmajim nekudoˈtajim], druhé slovo hovorová korupce נקודתיים, výrazný[nekudoˈtajim][rozporuplný ]), což znamená „dvojitý dvojtečka “V hebrejštině.
Název „Paamayim Nekudotayim“ byl zaveden v Izraeli vyvinutém[1] Zend Engine 0,5 použité v PHP 3. Ačkoli to bylo matoucí pro mnoho vývojářů, kteří nemluví hebrejsky, stále se používá v PHP 7, jako v této ukázkové chybové zprávě:
$ php -r ::Chyba analýzy: chyba syntaxe, neočekávaný T_PAAMAYIM_NEKUDOTAYIM
Podobná chyba může také nastat, když není přítomen žádný operátor rozlišení oboru. Například pokus o kontrolu, zda je konstanta prázdná (), spustí tuto chybu:
$ php -r 'define ("foo", "bar"); if (empty (foo)) echo "empty"; 'Chyba analýzy: chyba syntaxe, neočekávaná chyba ')', očekávaná hodnota T_PAAMAYIM_NEKUDOTAYIM
Od verze PHP 5.4 obsahují chybové zprávy týkající se operátoru rozlišení oboru tento název, ale poněkud objasnily jeho význam:
$ php -r ::Chyba analýzy: chyba syntaxe, neočekávaný znak '::' (T_PAAMAYIM_NEKUDOTAYIM)
Existují další méně zjevné způsoby, jak chybu spustit, například pokusem o použití následujícího neplatného výrazu PHP:
$ php -r statická konst $ a=1Chyba analýzy: chyba syntaxe, neočekávaný konec souboru, očekává se :: (T_PAAMAYIM_NEKUDOTAYIM)
Rubín
v Rubín, rozlišení oboru lze určit pomocí jmenné prostory (jako jsou třídy nebo moduly).
modul Příklad Verze = 1.0 třída << já # Přistupujeme ke třídě singletonů modulu def Ahoj(SZO = "svět") "Ahoj #{SZO}" konec koneckonec #/PříkladPříklad::Ahoj # => „Ahoj světe“Příklad.Ahoj "hacker" # => „Dobrý den, hackere“Příklad::Verze # => 1.0Příklad.Verze # NoMethodError# To ilustruje rozdíl mezi operátorem message (.) A operátorem rozsahu v Ruby (: :)# Můžeme použít :: :: ahoj a. Ahoj, protože ahoj je součástí rozsahu příkladu a protože příklad# odpoví na zprávu ahoj.## Nemůžeme udělat totéž s :: Version a .Version, protože verze je v rozsahu příkladu, ale# Příklad nemůže odpovědět na zprávu Verze, protože neexistuje žádný způsob, jak odpovědět.
Rozsah je také ovlivněn sigily které předmluvy názvy proměnných:
- "
$
" - globální proměnná - "
@
" - proměnná instance zjá
- "
@@
" - proměnná třídy - Žádné sigily, malá písmena ani podtržítko - lokální proměnná nebo metoda
- Žádný sigil, velká písmena - konstantní
Reference
- ^ „Provozovatel řešení rozsahu“. Manuál PHP 5. Citováno 2007-08-09.