Сигил (компьютерное программирование)

редактировать
Символ, прикрепленный к имени переменной

В компьютерном программировании, сигил () - это символ, прикрепленный к имени переменной, показывающий тип данных или область действия переменной, обычно префикс, как в $ foo, где $- сигил.

Сигил, от латинского sigillum, что означает «маленький знак», означает знак или изображение, предположительно обладающее магической силой. В 1999 был принят термин «для обозначения забавного символа в начале переменной Perl ».

Содержание

  • 1 Исторический контекст
  • 2 Подобные явления
    • 2.1 Переменные сценария оболочки
    • 2.2 Соглашения об идентификаторах
    • 2.3 Растягивание
    • 2.4 Венгерская нотация
    • 2.5 Литеральные аффиксы
    • 2.6 Аннотации Java
    • 2.7 Путаница
  • 3 См. Также
  • 4 Ссылки

Исторический контекст

Использование сигил стало популярным благодаря языку программирования BASIC. Самый известный пример сигилы в BASIC - это знак доллара ("$"), добавляемый к именам всех строк. Многие диалекты BASIC используют другие сигилы (например," %") для обозначения целых чисел и чисел с плавающей запятой и их точности, а иногда и других типов.

Ларри Уолл принял сценарии оболочки использует сигилы для своего языка программирования Perl. В Perl сигилы не определяют мелкозернистые типы данных, такие как строки и целые числа, но более общие категории скаляров ( с префиксом «$»), массивы (с использованием «@»), хэши (с использованием «%») и подпрограмм (с использованием «»). Раку также использует вторичные сигилы, или твигилы, для обозначения области действия переменных. Выдающиеся примеры twigils в Raku включает «^», используемый с самопровозглашенными формальными параметрами («переменные-заполнители»), и «.», используемый с средствами доступа к атрибутам объекта (т. е. переменными экземпляра).

В CLIPS, скалярные переменные имеют префикс «?», тогда как многополевые переменные (например, одноуровневый список) имеют префикс «$?».

В Common Lisp специальные переменные (с динамической областью видимости) обычно заключаются в *в так называемом «соглашении о наушниках ». Хотя это всего лишь соглашение и не соблюдается, сам язык принимает эту практику (например, * стандартный вывод *). Точно так же некоторые программисты окружают константы символом +.

. В CycL переменные имеют префикс «?». Аналогичным образом, имена констант имеют префикс «# $» (произносится как «хэш-доллар»).

В Эликсире строковые сигилы предоставляются через «~"символ.

В MAPPER (он же BIS) именованные переменные имеют префикс «<" and suffixed with ">», потому что строки или значения символов не требуют кавычек.

В скрипте mIRC идентификаторы имеют сигил «$», а все переменные имеют префикс «%» (независимо от локального или глобальные переменные или тип данных). Двоичные переменные имеют префикс «».

В языке программирования MUMPS «$» предшествует внутренним именам функций и «именам специальных переменных» (встроенным переменным для доступа к состоянию выполнения). «$ Z» предшествует именам нестандартных встроенных функций. «$$» предшествует именам внешних функций. Подпрограммы (используемые для процедур, подпрограмм, функций) и глобальные переменные (хранилище базы данных) имеют префикс каретки (^). На последнее поддерево глобальной переменной можно косвенно ссылаться с помощью символа вставки и последнего нижнего индекса; это называется «голая ссылка». Общесистемные процедуры и глобальные переменные (хранящиеся в определенных совместно используемых базах данных) имеют префикс ^%; они называются «процедурами процента» и «глобальными значениями процента».

В Objective-C строковые литералы, которым предшествует «@», являются экземплярами типа объекта NSStringили, поскольку clang v3.1 / LLVM v4.0, NSNumber, NSArrayили NSDictionary. Префикс- @также используется в ключевых словах interface, implementationи endдля выражения структуры определений классов. В объявлениях и определениях классов также используется префикс -для обозначения методов и переменных членов, а префикс +указывает элементы класса.

В языке PHP, который во многом был вдохновлен Perl, «$» предшествует любому имени переменной. Имена без этого префикса считаются константами, функциями или именами класса (или именами интерфейсов или признаков, которые используют то же пространство имен, что и классы).

PILOT использует «$» для буферов (строковых переменных), «#» для целочисленных переменных и «*» для меток программ..

Python использует префикс «@» для обозначения декоратора.

В Ruby обычные переменные не имеют сигилов, но «$"ставится перед глобальными переменными," @"ставится перед переменными экземпляра, а" @@"ставится перед переменные класса. Ruby также использует (строго обычные) суффиксные сигилы: «?» указывает метод предиката, возвращающий (обычно) значение boolean ; и «!» указывает, что метод может иметь потенциально неожиданный эффект и требует осторожного обращения.

В схеме, по соглашению, имена процедур, которые всегда возвращают логическое значение, обычно заканчиваются на «?». Аналогично, имена процедур, которые хранят значения в частях ранее выделенных объектов Scheme (таких как пары, векторы или строки), обычно заканчиваются на «!».

Стандартный ML использует префиксную сигилу «'» для переменной, которая относится к типу. Если сигил удваивается, это относится к типу, для которого определено равенство. Символ «'» может также появляться внутри или в конце переменной, и в этом случае он не имеет особого значения.

В Transact-SQL, «@» предшествует имени локальной переменной или параметра. Системные переменные (известные как глобальные переменные) выделяются префиксом «@@».

В Windows PowerShell, которая частично была вдохновлена ​​оболочками Unix и Perl, имена переменных начинаются с символа «$».

В XSLT переменные и параметры имеют начальный знак «$» при использовании, хотя когда они определены в или с «name", сигил не включается. Связанный с XSLT, XQuery использует форму сигилы «$» как в определении, так и при использовании.

В MEL имена переменных имеют префикс «$», чтобы отличать их от функций, команд и других идентификаторов.

Подобные явления

Переменные сценария оболочки

В сценариях оболочки Unix и таких утилит, как Makefiles, "$"- унарный оператор, переводящий имя переменной в ее содержимое. Хотя это может показаться похожим на сигилу, это правильно унарный оператор для лексического косвенного обращения, аналогичный *оператору разыменования для указателей в C, что заметно по тому факту, что знак доллара опущен при присвоении переменной.

Соглашения об идентификаторах

В Fortran сигилы не используются, но все переменные, начинающиеся с букв I, J, K, L, M и N, равны целые числа по умолчанию. В документации Fortran это называется «неявная типизация», хотя всегда доступна явная типизация, позволяющая объявить любую переменную с любым типом. (Выбор диапазона I – N соответствует традиционным математическим соглашениям об именах.)

Различные языки программирования, включая Prolog, Haskell, Ruby и Go обрабатывают идентификаторы, начинающиеся с заглавной буквы, иначе, чем идентификаторы, начинающиеся с маленькой буквы, практика, связанная с использованием сигил.

Stropping

Фактически форма Stroping, использование многих языков в Microsoft .NET Common Language Infrastructure ( CLI) требуется способ использования переменных на другом языке, которые могут быть ключевыми словами на вызывающем языке. Иногда это делается с помощью префиксов. В C # любые имена переменных могут иметь префикс «@». Это в основном используется для того, чтобы разрешить использование имен переменных, которые в противном случае конфликтуют с ключевыми словами. То же самое достигается в VB.Net путем заключения имени в квадратные скобки, как в [end].

Префикс «@» также может применяться к строке литералы; см. буквальные аффиксы ниже.

Венгерская нотация

С сигиллами связана Венгерская нотация, соглашение об именах для переменных, которое определяет тип переменной путем присоединения к переменной определенных буквенных префиксов. название. Однако, в отличие от сигил, венгерская нотация не предоставляет компилятору никакой информации; как таковые, явные типы должны быть указаны с избыточностью для переменных (если не используется язык с выводом типа ). Поскольку большинство стандартных компиляторов не предписывают использование префиксов, это допускает пропуски, а также делает код подверженным путанице из-за случайного ошибочного использования.

Литеральные аффиксы

В то время как сигилы применяются к именам (идентификаторам)), аналогичные префиксы и суффиксы могут применяться к литералам, особенно к целочисленным литералам и строковым литералам, указывая, как следует оценивать литерал, или какой тип данных это. Например, 0x10ULLоценивается как значение 16 как длинное длинное целое число без знака в C ++: префикс 0xуказывает шестнадцатеричное число, а суффикс ULLуказывает беззнаковое длинное длинное число. Точно так же префиксы часто используются для обозначения необработанной строки , например r "C: \ Windows"в Python, которая представляет строку со значением C: \ Windows; в качестве экранированной строки это будет записано как "C: \\ Windows".

Поскольку это влияет на семантику (значение) литерала, а не на синтаксис или семантику идентификатора (имени), это ни то, ни другое строппинг (синтаксис идентификатора) или сигил (семантика идентификатора), но он синтаксически похож.

Аннотации Java

Сравните аннотации Java, такие как @Override и @Deprecated.

Путаница

В некоторых случаях один и тот же синтаксис может использоваться для разных целей, что может вызвать путаницу. Например, в C # префикс «@» может использоваться либо для сглаживания (чтобы разрешить использование зарезервированных слов в качестве идентификаторов), либо в качестве префикса к литералу (чтобы указать необработанную строку ); в этом случае ни одно использование не является сигилой, поскольку оно влияет на синтаксис идентификаторов или семантику литералов, но не на семантику идентификаторов.

См. Также

Ссылки

Последняя правка сделана 2021-06-08 08:26:48
Содержание доступно по лицензии CC BY-SA 3.0 (если не указано иное).
Обратная связь: support@alphapedia.ru
Соглашение
О проекте