Sigil (programozás)

A programozásban a jel [1] [2]  egy változónévhez csatolt karakter, amely egy adattípust vagy hatókört jelöl , általában egy előtag, például $foohol $van a jel.

A Sigil , a latin sigillum szóból , jelentése "kis jel", olyan jelet vagy képet jelent, amely feltételezhetően mágikus erővel rendelkezik . [3] A jelek használhatók névterek elhatárolására , amelyek eltérő tulajdonságokkal és viselkedéssel rendelkeznek.

Történelmi kontextus

A jelek használatát a BASIC programozási nyelv tette népszerűvé . A BASIC jelképének leghíresebb példája az összes karakterlánc nevéhez hozzáadott dollárjel („ ”) . A BASIC számos dialektusa más jeleket is használ (például " ") egész számok , lebegőpontos számok és néha más típusok ábrázolására. $%

Larry Wall jeleket adott a Perl programozási nyelvéhez , emulálva a jeleket a  parancssori szkriptekben . A Perlben a sigilek nem adattípusokat határoznak meg, például karakterláncokat és egész számokat, hanem általánosabb kategóriákat: skalárok ( " $" előtag az  angol  skalárból ), tömbök ( " @" előtag az  angol  tömbből ), hashek (előtag " %" és  szubrutinok (" &"). A Raku nyelv segédszigileket is használ a jelek és a változónevek között, twigils , [4] a változók hatókörének jelzésére. Élénk példák a twigil-ekre a Raku nyelven: „ ^”, a blokk vagy szubrutin pozicionálási argumentumaival együtt használatos, amelyek önmeghatározódtak  egy blokk vagy alprogram törzsében ; " ." objektum attribútumokkal (tulajdonságok és metódusok) használatos.

A CLIPS -ben a skalárváltozók előtagja a " ?", a több változó (például az egyszintű listák) pedig a " $?" előtag.

A Common Lisp -ben a dinamikus hatókörű változók általában a " *" ("fülvédő konvenció") közé vannak zárva. Bár ez csak konvenció, és egyáltalán nem szükséges, maga a nyelv használja ezt a gyakorlatot (például *standard-output*). Egyes programozók a konstansokat " +" jellel zárják.

A CycL-ben a változókat " ?" jel előzi meg. [5] Az állandó nevek a " " előtaggal kezdődnek #$(ezt "hash dollár"-nak ejtik). [6]

Az Elixirben a jelek a szintaxis olyan formái, amelyek " " karakterrel kezdődnek ~, lehetővé téve reguláris kifejezések, karakterlánc-literálok, listák és dátumok deklarálását. [7] [8]

A MAPPER-ben (más néven BIS) a megnevezett változók háromszög zárójelben vannak, mivel a karakterláncok és karakterek nem igényelnek idézőjeleket.

A MIRC szkriptekben az azonosítók (amelyek kiszámított értékeket adnak vissza [9] ) „ ” előtaggal, a változók pedig „ ” előtaggal (lokális és globális) $íródnak . %A tetszőleges méretű bináris adatok változói előtt " &" szerepel.

A MUMPS programozási nyelvben a " " karakter $megelőzi a rendszerfüggvényneveket és a "speciális változóneveket" (a végrehajtási állapot eléréséhez szükséges rendszerváltozók). A " $Z" jel előzi meg a nem szabványos rendszerfüggvények nevét. A " $$" jel előzi meg a felhasználó által definiált függvények nevét. Az alprogramok ( egyes esetekben ) és a globális változók (lemezen tárolt) neve a "^" karakterrel kezdődik.

Az Objective-C- ben a " " jel előtt álló karakterlánc-literálok @az osztály példányai, NSStringvagy mivel clang v3.1 / LLVM v4.0, NSNumber, NSArrayvagy NSDictionary. A " " előtag @a kulcsszavakban is szerepel @interface, @implementationés @endaz osztálydefiníciós szintaxisban is használatos. Az osztályok a „ -” előtagot is használják egy példány (objektum) metódusainak és mezőinek jelzésére, a „ +” előtag pedig egy osztály (vagyis egy objektumtípus) tagjait jelöli.

A PHP nyelvben , amelyet nagyrészt a Perl ihletett, a " $" minden változónév előtt áll. Az előtag nélküli neveket konstansoknak , függvény- vagy osztályneveknek tekintjük (vagy olyan interfész- vagy jellemzőneveknek , amelyek ugyanazt a névteret osztják meg, mint az osztályok).

A PILOT a " $" kódot használja a pufferekhez (karakterláncváltozókhoz), a " #" értéket az egész változókhoz és a " *" kódot a címkékhez .

A Python a " @" ( pie szintaxist) használja a dekorátorokhoz [10] és a " __", ( dunder ) a "privát" osztály tagjaihoz.

A Rubyban a reguláris változóknak nincs jele, de a globális változók előtt " ", a példányváltozók $előtt " @", az osztályváltozók előtt pedig " @@" szerepel. A Ruby (szigorúan hagyományos) utótag jeleket is használ: " ?" egy predikátum metódust ad meg, amely logikai értéket ad vissza; A " !" azt jelzi, hogy a módszer potenciálisan váratlan hatással járhat, ezért óvatosan kell kezelni. [tizenegy]

A Scheme programban megegyezés szerint azoknak az eljárásoknak a neve, amelyek mindig logikai értéket adnak vissza, általában " ?" karakterre végződnek. Azokat az eljárásokat, amelyek az előre lefoglalt sémaobjektumok (például párok, vektorok vagy karakterláncok) részeiben tárolnak értékeket, általában " !" karakterre végződnek.

A szabványos ML a " " előtagot használja 'a típusokra hivatkozó változókhoz. Ha a jelet megduplázzuk, az arra a típusra utal, amelyre az egyenlőség definiálva van. A " " szimbólum 'megjelenhet a változónevek belsejében vagy végén is, ebben az esetben nincs egyértelmű jelentése.

A Transact-SQL-ben a " " karakter @megelőzi egy helyi változó vagy paraméter nevét. A rendszerváltozók (globális változókként ismertek) " @@" jelzéssel vannak megjelölve.

A részben a Unix shell és a Perl által ihletett Windows PowerShellben a változónevek " " karakterrel kezdődnek. $

Az XSLT -ben a változók és paraméterek "" előtaggal vannak ellátva , habár az attribútumban vagy az attribútumban $megadva nem adunk hozzá jelet . Az XSLT-vel kapcsolatos nyelv , az XQuery a " " karaktert használja mind a definícióban, mind a használatban. <xsl:param><xsl:variable>name$

A MEL-ben a változónevek elé " $" kerül, hogy megkülönböztesse őket a függvényektől, parancsoktól és egyéb azonosítóktól.

Hasonló jelenségek

Shell változók

Unix shellben és olyan segédprogramokban, mint a Makefiles , a " $" egy unáris operátor , amely a változó nevét a tartalommá fordítja. A külső hasonlóság ellenére a jel ebben az esetben nem része a névnek, ami észrevehető a hozzárendelésben való hiánya miatt. A C analógja  a mutatók hivatkozás megszüntető operátora .

Azonosítókonvenciók

A Fortran nem használja a  jeleket, de az I, J, K, L, M és N betűkkel kezdődő változók alapértelmezés szerint egész számok . [12] A Fortran dokumentációjában ezt "implicit tipizálásnak" nevezik, bár az explicit gépelés mindig elérhető, lehetővé téve bármely változó bármilyen típussal történő deklarálását. Az IN tartomány kiválasztása a hagyományos matematikai változó-elnevezési konvenciókat követi .

Különböző programozási nyelvek, köztük a Prolog , a Haskell , a Ruby és  a Go, másként kezelik a nagybetűvel kezdődő azonosítókat , mint a kisbetűkkel kezdődőket.

Strapping

A Microsoft .NET Common Language Infrastructure (CLI) módot kínál arra, hogy a hívott nyelvben olyan változókat szöktessen meg, amelyek kulcsszavak lehetnek a hívó nyelvben, angol nyelvű forrásokban stropping [13] néven . Néha ez előtagokkal történik. Például a  C# nyelvben a változónevek " " előtaggal kezdődhetnek @. [14] A VB.Net  ugyanerre a célra szögletes zárójeleket használ . [tizenöt]

Magyar jelölés

A jelekhez kapcsolódik a magyar jelölés  , egy változó elnevezési konvenció , amely úgy határozza meg a változó típusát, hogy bizonyos betűelőtagokat ad a változó nevéhez. A magyar jelölés a jelekkel ellentétben nem ad információt a fordítónak; a típusokat kifejezetten meg kell adni a változókhoz (kivéve, ha  típuskövetkeztető nyelvet használunk ). Mivel a legtöbb szabványos fordítóprogram nem írja elő az előtagok használatát, ez lehetővé teszi a hibák elkövetését, és a kódot hajlamossá teszi a véletlen visszaélések miatti összekeverésre. [16]

Betű toldalékok

Míg a jelek a nevekre (azonosítókra) vonatkoznak, hasonló előtagok és utótagok vonatkozhatnak a  literálokra , különösen az egész számokra és a karakterláncokra, amelyek meghatározzák a literál értelmezésének módját vagy az adattípusát. Például 0x10ULL16-os értékként kezeljük C++ adattípus esetén unsigned long long:  azt jelzi , 0xhogy hexadecimális számról van szó, az utótag ULLpedig a típust. Az előtagokat gyakran használják a karakterláncok megjelölésére karakterek kihagyása nélkül . Például r"C:\Windows"a Pythonban egy megtisztított karakterláncot a következőképpen írnak ki "C:\\Windows".

Mivel a literál szemantikáját (jelentését) érinti, és nem az azonosító (név) szintaxisát vagy szemantikáját, ezért a szintaktikai hasonlóságok ellenére sem nem csíkozás (azonosító szintaxis), sem szigil (azonosító szemantika).

Java annotációk

Például a beépített Java annotációk , mint @Overridepl @Deprecated.

Zavar

Bizonyos esetekben ugyanaz a szintaxis különböző célokra használható, ami zavart okozhat. Például a  C# nyelvben a " " előtag @használható kivágásként és literál előtagjaként is (a nem megtisztított karakterláncok jelölésére); ebben az esetben egyik használat sem szigil, mert az azonosítók szintaxisát vagy a literálok szemantikáját érinti, nem pedig az azonosítók szemantikáját.

Lásd még

Jegyzetek

  1. Vlagyimir Lettiev. Pragmatikus Perl 13: Függvény aláírás a Perl 5.20-ban . Pragmatic Perl (2014. március 13.). — „... használhatunk szabályos jelet is [...] Ebben a példában a függvényt csak az első és a negyedik argumentum érdekli. A többi argumentumhoz pozíció helyőrzők vannak megadva: a $ és a @ jelek, ezek nem lesznek meghatározva a függvényen belül.". Letöltve: 2021. szeptember 13. Az eredetiből archiválva : 2021. szeptember 13.
  2. Andrej Shitov. Pragmatic Perl 22: Perl 6 for the 21st Century . Pragmatic Perl (2014. december 22.). "A Perl 6 jeleket használ azokhoz a változókhoz, amelyek átfedésben vannak a Perl 5-tel. Különösen a skalárok, a listák és a hash-ek használják a $, @ és % jeleket." Letöltve: 2021. szeptember 13. Az eredetiből archiválva : 2021. szeptember 13.
  3. A jelkép definíciója . Collins angol szótár . Letöltve: 2012. május 22. Az eredetiből archiválva : 2021. május 1.
  4. "Perl 6 variables:Twigils" Archiválva : 2016. június 17., a Wayback Machine , Perl 6 dokumentációja
  5. Változók - Cycorp . www.cyc.com . Letöltve: 2017. december 31. Az eredetiből archiválva : 2018. január 25..
  6. Constants-Cycorp . www.cyc.com . Letöltve: 2017. december 31. Az eredetiből archiválva : 2018. január 25..
  7. Sigils . Elixir és Wunsh (2020). Letöltve: 2021. szeptember 13. Az eredetiből archiválva : 2021. szeptember 13.
  8. Sigils  _ _ elixir-lang.github.com . Letöltve: 2021. július 27. Az eredetiből archiválva : 2021. augusztus 2..
  9. mIRC Súgó . www.mirc.com . Letöltve: 2021. július 27. Az eredetiből archiválva : 2021. augusztus 9..
  10. PEP 318 – Dekorátorok funkciókhoz és módszerekhez . Letöltve: 2021. augusztus 9. Az eredetiből archiválva : 2020. június 3.
  11. Fekete. Bang módszerek; vagy, Veszély, Will Rubyist! (2007. augusztus 15.). Archiválva az eredetiből 2016. május 22-én.
  12. Adatbeviteli szabályok (FORTRAN 77 nyelvi referencia) . docs.oracle.com . Letöltve: 2021. augusztus 4. Az eredetiből archiválva : 2021. február 25.
  13. King, Peter R., szerk. (1974-06-18). „(ismeretlen)” . Az ALGOL 68 végrehajtásáról szóló nemzetközi konferencia anyaga . Department of Computer Science, University of Manitoba, Winnipeg: University of Manitoba, Department of Computer Science: 148. ISBN  9780919628113 . Archiválva az eredetiből, ekkor: 2021-08-09 . Letöltve: 2021-08-09 . Súlyosabb problémákat vet fel a "stropping", amely a félkövér szöveg és a római szöveg megkülönböztetésére szolgál. Egyes megvalósítások aposztrófokat írnak elő félkövérrel (innen ered a név kivonása); mások hátrét és aláhúzást igényelnek; […] Elavult használt paraméter |deadlink=( súgó )
  14. C# kulcsszavak . MSDN . Letöltve: 2011. március 23. Az eredetiből archiválva : 2017. január 28..
  15. karakterlánc (C# referencia) . MSDN . Letöltve: 2011. március 23. Az eredetiből archiválva : 2011. március 14..
  16. Linux kernel kódolási stílus Archiválva : 2021. augusztus 9. a Wayback Machine -nél , Linus Torvalds