Сигил (компьютерное программирование) - Sigil (computer programming)
В компьютерное программирование, а сигил (/ˈsɪdʒəl/) - символ, прикрепленный к Переменная имя, показывающее переменную тип данных или же объем, обычно префикс, как в $ foo
, куда $
это сигилла.
Сигил, от латинский сигиллум, что означает "маленький знак", означает знак или изображение, предположительно обладающее магической силой.[1] В 1999 году Филип Гвин принял термин "для обозначения забавного персонажа в передней части Perl Переменная."[2]
Исторический контекст
Использование сигил было популяризировано BASIC язык программирования. Самый известный пример сигилы в BASIC - это знак доллара ("$
") добавлен к именам всех струны. Многие BASIC диалекты используют другие сигилы (например, "%
") для обозначения целые числа и числа с плавающей запятой и их точность, а иногда и другие типы.
Ларри Уолл усыновленный сценарии оболочки использует сигилы для своего Язык программирования Perl.[нужна цитата ] В Perl сигилы не определяют мелкозернистые типы данных, такие как строки и целые числа, но более общие категории скаляры (с префиксом "$
"), массивы (используя"@
"), хеши (с помощью "%
"), и подпрограммы (с помощью "&
"). Раку также использует вторичные сигилы или веточки,[3] для обозначения объема переменных. Известные примеры веточек в Раку включают "^
", используемый с самопровозглашенными формальными параметрами (" переменные-заполнители "), и".
", используемый со средствами доступа к атрибутам объекта (т. е. переменными экземпляра).
В КЛИПЫ, скалярные переменные имеют префикс "?
"сигил, в то время как многополевые переменные (например, одноуровневый список) имеют префикс"$?
".
В Common Lisp специальные переменные (с динамической областью видимости) обычно окружены *
в том, что называется "соглашение о наушниках ". Хотя это всего лишь соглашение и не является обязательным, сам язык принимает эту практику (например, * стандартный вывод *). Точно так же некоторые программисты заключают константы в +
.
В CycL, переменные имеют префикс "?
"сигил.[4] Точно так же имена констант имеют префикс "#$
"(произносится" хэш-доллар ").[5]
В Эликсир, строковые сигилы предоставляются через "~
" символ.
В КАРТА (также известный как BIS) именованные переменные имеют префикс «<» и суффикс «>», потому что строки или значения символов не требуют кавычек.
В mIRC скрипт, идентификаторы имеют "$
"сигил, в то время как все переменные имеют"%
"с префиксом (независимо от локальных или глобальных переменных или типа данных). Двоичные переменные имеют префикс"&
".
в МАМПЫ язык программирования, "$
«предшествует внутренним именам функций и« именам специальных переменных »(встроенным переменным для доступа к состоянию выполнения)».$ Z
"предшествует именам нестандартных встроенных функций".$$
"предшествует внешним именам функций. Подпрограммы (используемые для процедур, подпрограмм, функций) и глобальные переменные (хранилище базы данных) имеют префикс каретки (^). На последнее поддерево глобальной переменной можно косвенно ссылаться с помощью символа вставки и последнего индекса; это Общесистемные процедуры и глобальные переменные (хранящиеся в определенных общих базах данных) имеют префикс ^%; они называются «подпрограммами процента» и «глобальными переменными процента».
В Цель-C, строковые литералы, которым предшествует "@
"являются экземплярами типа объекта NSString
или, поскольку лязгать v3.1 / LLVM v4.0, NSNumber
, NSArray
или же NSDictionary
. Префикс-@
также используется в ключевых словах интерфейс
, выполнение
, и конец
чтобы выразить структуру определений классов. В объявлениях и определениях классов также используется префикс -
используется для обозначения методов и переменных-членов, а префикс +
указывает элементы класса.
в PHP язык, который во многом был вдохновлен Perl ",$
"предшествует любому Переменная имя. Имена без этого префикса считаются константы, функции или же учебный класс имена (или имена интерфейсов или признаков, которые используют то же пространство имен, что и классы).
ПИЛОТ использует "$
«для буферов (строковых переменных)»,#
"для целочисленных переменных и"*
"для программных этикеток.
Python использует "@
"префикс для обозначения декоратор.
В Рубин, обычные переменные не имеют сигил, но "$
"имеет префикс глобальные переменные, "@
"имеет префикс переменные экземпляра, и "@@
"имеет префикс переменные класса. Ruby также использует (строго обычные) суффиксные сигилы: "?
"указывает на метод предиката, возвращающий (обычно) логический ценить; и "!
"указывает на то, что метод может иметь потенциально неожиданный эффект и требует осторожного обращения.
В Схема по соглашению имена процедур, которые всегда возвращают логическое значение, обычно заканчиваются на "?
". Точно так же имена процедур, которые хранят значения в частях ранее выделенных объектов Scheme (таких как пары, векторы или строки), обычно заканчиваются на"!
".
Стандартный ML использует префиксную сигилу "'
"на переменной, которая ссылается на тип. Если сигил удваивается, он относится к типу, для которого определено равенство."'
"символ может также появляться внутри или в конце переменной, и в этом случае он не имеет особого значения.
В Transact-SQL, "@
"предшествует имени локальной переменной или параметра. Системные переменные (известные как глобальные переменные) выделяются знаком"@@
" префикс.
В Windows PowerShell, который частично был вдохновлен Оболочки Unix и Perl имена переменных начинаются с префикса "$
"сигил.
В XSLT, переменные и параметры имеют начало "$
"сигил в использовании, хотя когда он определен в <xsl:param>
или же <xsl:variable>
с "имя
", сигил не включен. Что касается XSLT, XQuery использует "$
"форма сигилы как в определении, так и в использовании.
В MEL, имена переменных начинаются с префикса "$
"чтобы отличать их от функций, команд и других идентификаторов.
Подобные явления
Переменные сценария оболочки
В Unix сценарии оболочки и в таких коммунальных услугах, как Makefiles, "$
"- унарный оператор, который переводит имя переменной в ее содержимое. Хотя это может показаться похожим на сигилу, на самом деле это унарный оператор для лексического косвенное обращение, аналогично *
оператор разыменования для указателей в C, что заметно по тому факту, что знак доллара опускается при присвоении переменной.
Соглашения об идентификаторах
В Фортран, сигилы не используются, но используются все переменные, начинающиеся с букв I, J, K, L, M и N. целые числа по умолчанию. В документации Fortran это называется «неявная типизация», хотя всегда доступна явная типизация, позволяющая объявить любую переменную с любым типом. (Выбор диапазона I – N соответствует традиционным математические соглашения об именах.)
Различные языки программирования, включая Пролог, Haskell, Рубин и Идти относиться идентификаторы начинающиеся с заглавной буквы в отличие от идентификаторов, начинающихся с маленькой буквы, практика, связанная с использованием сигил.
Строппинг
Собственно форма строппинг, использование многих языков в Microsoft .СЕТЬ Инфраструктура общего языка (CLI) требует способа использования переменных на другом языке, которые могут быть ключевыми словами на вызывающем языке. Иногда это делается с помощью префиксов. В C #, любые имена переменных могут иметь префикс "@
". Это в основном используется, чтобы разрешить использование имен переменных, которые в противном случае конфликтуют с ключевыми словами.[6] То же самое достигается в VB.Net заключив имя в квадратные скобки, как в [конец]
.[7]
"@
"префикс также может применяться к строковым литералам; см. буквальные аффиксы ниже.
Венгерская нотация
С сигиллами связана Венгерская нотация, а соглашение об именовании для переменных, который определяет тип переменной, добавляя определенные буквенные префиксы к имени переменной. Однако, в отличие от сигил, венгерская нотация не предоставляет компилятору никакой информации; как таковые, явные типы должны быть указаны с избыточностью для переменных (если не используется язык с вывод типа ). Поскольку большинство стандартных компиляторов не предписывают использование префиксов, это допускает пропуски, а также делает код подверженным путанице из-за случайного ошибочного использования.[8]
Буквальные аффиксы
В то время как сигилы применяются к именам (идентификаторам), аналогичные префиксы и суффиксы могут применяться к литералы, особенно целочисленные литералы и строковые литералы, указывая, как следует оценивать литерал, или какой это тип данных. Например, 0x10ULL
оценивает значение 16 как длинное целое число без знака в C ++: 0x
префикс обозначает шестнадцатеричный, а суффикс ULL
указывает беззнаковый длинный длинный. Точно так же префиксы часто используются для обозначения необработанная строка, Такие как r "C: Windows"
в Python, который представляет строку со значением C: Windows
; как экранированная строка это будет записано как "C: Windows"
.
Поскольку это влияет на семантику (значение) литерала, а не на синтаксис или семантику идентификатора (имени), это не штриховка (синтаксис идентификатора) и не сигил (семантика идентификатора), но синтаксически похож.
Аннотации Java
Сравнивать Аннотации Java такие как @Override и @Deprecated.
Путаница
В некоторых случаях один и тот же синтаксис может использоваться для разных целей, что может вызвать путаницу. Например, в C #, "@
"префикс" может использоваться либо для перестановки (чтобы разрешить использование зарезервированных слов в качестве идентификаторов), либо как префикс к литералу (чтобы указать необработанная строка ); в этом случае ни одно использование не является сигилой, поскольку оно влияет на синтаксис идентификаторов или семантику литералов, а не на семантику идентификаторов.
Смотрите также
Рекомендации
- ^ "Определение сигилы". Словарь английского языка Коллинза. Получено 22 мая 2012.
- ^ Марк Джейсон Доминус (10 ноября 2003 г.). "Re: sigil". PerlMonks. Фонд Perl. Получено 2009-09-12.
- ^ "Переменные Perl 6: Twigils", Perl 6 Документация
- ^ «Переменные - Cycorp». www.Cyc.com. Получено 31 декабря 2017.
- ^ «Константы - Цикорп». www.Cyc.com. Получено 31 декабря 2017.
- ^ "Ключевые слова C #". MSDN. Получено 2011-03-23.
- ^ "строка (Справочник по C #)". MSDN. Получено 2011-03-23.
- ^ Стиль кодирования ядра Linux, Линус Торвальдс