Jump to content

Символ (программирование)

(Перенаправлено с Символ (Лисп) )

Символ которого в компьютерном программировании — это примитивный тип данных , экземпляры имеют удобочитаемую форму. можно использовать символы В качестве идентификаторов . В некоторых языках программирования их называют атомами . [1] Уникальность обеспечивается за счет хранения их в таблице символов . Наиболее распространенное использование символов программистами — это отражение языка (особенно для обратных вызовов ), а наиболее распространенным косвенным образом — их использование для создания связей объектов .

В самой тривиальной реализации они называются целыми числами ; например, перечислимый тип на C. языке

Поддерживать

[ редактировать ]

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

язык введите имя(я) пример литерала(ов)
ANSI Общий Лисп символ, ключевое слово symbol, :keyword
Кложур символ, [2] ключевое слово [3] 'symbol, :keyword
Дарт Символ [4] #sym
Эликсир атом, символ :sym
Эрланг атом sym или 'sym'
JavaScript (ES6 и новее) Символ Symbol("sym");
Юлия Символ :sym
К символ `сим
Цель-C КЛЕТКА @selector(sym)
ПИКАКС БАЗОВЫЙ символ symbol let name = variable
Постскриптум имя /sym или sym
Пролог атом, символ sym или 'sym'
Руби Символ :sym или :'sym'
Скала скала.Символ 'symbol
Схема символ sym
Смолток Символ #sym или #'sym'
СМЛ/Нью-Джерси атом.атом
Вольфрам Язык Символ Symbol["sym"] или sym

Символы в Julia — это интернированные строки, используемые для представления идентификаторов в анализируемом коде Julia ( AST ), а также в качестве имен или меток для идентификации сущностей (например, как ключи в словаре). [5]

Символ в Lisp уникален в пространстве имен (или пакете в Common Lisp ). Символы можно проверить на равенство с помощью функции EQ. Программы на Lisp могут генерировать новые символы во время выполнения. Когда Лисп считывает данные, содержащие символы, представленные в текстовом виде, ссылаются на существующие символы. Если символ неизвестен, программа чтения Lisp создает новый символ.

В Common Lisp символы имеют следующие атрибуты: имя, значение, функцию, список свойств и пакет. [6]

В Common Lisp также возможно, что символ не встроен в пакет. Такие символы можно распечатать, но при обратном чтении необходимо создать новый символ. Поскольку он не интернирован , исходный символ не может быть извлечен из пакета.

В символах Common Lisp могут использоваться любые символы, включая пробелы, например пробелы и символы новой строки. Если символ содержит пробел, его необходимо записать как |это символ|. Символы можно использовать в качестве идентификаторов для любых именованных программных конструкций: переменных, функций, макросов, классов, типов, тегов перехода и т. д. Символы могут быть интернированы в пакет. [7] Символы ключевых слов самооцениваются. [8] и помещен в пакет с именем KEYWORD.

Ниже приведено простое внешнее представление символа Common Lisp :

this-is-a-symbol

Символы могут содержать пробелы (и все остальные символы):

|This is a symbol with whitespace|

В Common Lisp символы с двоеточием в начале в их печатном представлении являются символами ключевых слов . Они интернированы в пакет ключевых слов.

:keyword-symbol

Печатное представление символа может включать имя пакета. Между названием пакета и названием символа пишутся два двоеточия.

package-name::symbol-name

Пакеты могут экспортировать символы. Тогда между названием пакета и названием символа пишется только одно двоеточие.

package:exported-symbol

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

#:uninterned-symbol

Постскриптум

[ редактировать ]

В PostScript ссылки на имен объекты могут быть как буквальными , так и исполняемыми , что влияет на поведение интерпретатора при их встрече. cvx и cvl операторы могут использоваться для преобразования между двумя формами. Когда имена создаются из строк с помощью cvn оператор, набор разрешенных символов не ограничен.

В Прологе символы (или атомы) являются основными примитивными типами данных, похожими на числа. [9] Точные обозначения могут отличаться в разных диалектах Пролога. Однако это всегда довольно просто (кавычки или специальные начальные символы не требуются).

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

Следующий пример демонстрирует два факта (описывающих, что такое отец ) и одно правило (описывающее значение слова «брат/сестра »). В этих трех предложениях используются символы (отец, Зевс, Гермес, Персей и брат) и некоторые абстрактные переменные (X, Y и Z). Материнские . отношения опущены для ясности

father(zeus, hermes).
father(zeus, perseus).

sibling(X, Y) :- father(Z, X), father(Z, Y).

В Ruby символы можно создавать в буквальной форме или путем преобразования строки. [1] Их можно использовать как идентификатор или встроенную строку. [10] Два символа с одинаковым содержанием всегда будут относиться к одному и тому же объекту. [11] Считается лучшей практикой использовать символы в качестве ключей ассоциативного массива в Ruby. [10] [12]

Ниже приведен простой пример символьного литерала в Ruby: [1]

my_symbol = :a
my_symbol = :"an identifier"

Строки можно преобразовать в символы, и наоборот:

irb(main):001:0> my_symbol = "Hello, world!".intern 
=> :"Hello, world!"
irb(main):002:0> my_symbol = "Hello, world!".to_sym 
=> :"Hello, world!"
irb(main):003:0> my_string = :hello.to_s
=> "hello"

Символы – это объекты Symbol класс в Руби: [13]

irb(main):004:0> my_symbol = :hello_world
=> :hello_world
irb(main):005:0> my_symbol.length 
=> 11
irb(main):006:0> my_symbol.class 
=> Symbol

Символы обычно используются для динамической отправки сообщений (вызова методов) объектам:

irb(main):007:0> "aoboc".split("o")
=> ["a", "b", "c"]
irb(main):008:0> "aoboc".send(:split, "o") # same result
=> ["a", "b", "c"]

Символы как ключи ассоциативного массива:

irb(main):009:0> my_hash = { a: "apple", b: "banana" }
=> {:a=>"apple", :b=>"banana"}
irb(main):010:0> my_hash[:a] 
=> "apple"
irb(main):011:0> my_hash[:b] 
=> "banana"

В Smalltalk символы можно создавать в буквальной форме или путем преобразования строки. Их можно использовать как идентификатор или встроенную строку. Два символа с одинаковым содержанием всегда будут относиться к одному и тому же объекту. [14] В большинстве реализаций Smalltalk селекторы (имена методов) реализованы как символы.

Ниже приведен простой пример символьного литерала в Smalltalk:

my_symbol := #'an identifier' " Symbol literal "
my_symbol := #a               " Technically, this is a selector literal. In most implementations, "
                              " selectors are symbols, so this is also a symbol literal "

Строки можно преобразовать в символы, и наоборот:

my_symbol := 'Hello, world!' asSymbol " => #'Hello, world!' "
my_string := #hello: asString         " => 'hello:' "

Символы соответствуют symbol протокол, и их класс называется Symbol в большинстве реализаций:

my_symbol := #hello_world
my_symbol class            " => Symbol "

Символы обычно используются для динамической отправки сообщений (вызова методов) объектам:

" same as 'foo' at: 2 "
'foo' perform: #at: with: 2 " => $o "
  1. ^ Перейти обратно: а б с Томас, Дэйв ; Фаулер, Чад; Хант, Энди (2001). Программирование на Ruby: руководство для прагматичных программистов; [включая Ruby 1.8] (2-е, 10-е изд.). Роли, Северная Каролина: Прагматичная книжная полка. ISBN  978-0-9745140-5-5 .
  2. ^ Символы на странице структур данных.
  3. ^ Ключевые слова на странице Структуры данных.
  4. ^ «Экскурсия по языку дартс | Символы» . Язык программирования Дартс . Проверено 17 января 2021 г.
  5. ^ "Юлия Кор.Символ" . Юлия Документация . Проверено 31 мая 2022 г.
  6. ^ «CLHS: СИМВОЛ системного класса» . www.lispworks.com .
  7. ^ «CLHS: ПАКЕТ системных классов» . www.lispworks.com .
  8. ^ Питер Норвиг : Парадигмы программирования искусственного интеллекта: тематические исследования в Common Lisp , Морган Кауфманн, 1991, ISBN   1-55860-191-0 , Интернет
  9. ^ Братко, Иван (2001). Программирование на Прологе для искусственного интеллекта . Харлоу, Англия; Нью-Йорк: Эддисон Уэсли. ISBN  978-0-201-40375-6 .
  10. ^ Перейти обратно: а б Кидд, Эрик (20 января 2007 г.). «13 способов взглянуть на рубиновый символ» . Случайные хаки . Проверено 10 июля 2011 г.
  11. ^ «Программирование Ruby: Руководство прагматичного программиста» . Ruby-doc.com .
  12. ^ «Использование символов по неправильной причине» . Гномические заметки .
  13. ^ «Символ» . Рубиновая документация . Проверено 10 июля 2011 г.
  14. ^ http://wiki.squeak.org/squeak/uploads/172/standard_v1_9-indexed.pdf Стандарт ANSI Smalltalk.
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 147483ab63e8eeb02e677dcc2bb02aba__1721316060
URL1:https://arc.ask3.ru/arc/aa/14/ba/147483ab63e8eeb02e677dcc2bb02aba.html
Заголовок, (Title) документа по адресу, URL1:
Symbol (programming) - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)