2013-05-12 2 views
2

На некоторых языках одинарные кавычки используются для определения символов, а двойные кавычки используются для определения строк. В других языках для определения строк используются одиночные и двойные кавычки.Дифференциация между объявлением строки и объявлением char

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

Есть ли какие-либо последствия для того, чтобы не было возможности конкретно определить персонажа? Допустимо ли - или желательно - автоматически оптимизировать одиночные символьные строки в символы?

+2

Вы ищете причину из-за нескольких произвольных и древних решений. –

+1

В зависимости от языка «одиночный символ» может быть не того же типа, что и «строка». Таким образом, в них это не имеет смысла. В языках, на которых они имеют один и тот же тип, оптимизация не производится. – Mat

+0

Справедливое предупреждение. Мне любопытно, что решения, принятые за последние десятилетия, по-прежнему актуальны и в чем их последствия. – George

ответ

1

Если язык имеет тип символьных данных, тогда обычно существует способ определения символьного литерала.

В VB.NET, например, литерой выглядит как одна строка символов, но с суффиксом C:

Dim space As Char = " "C 

(Причина, по которой апостроф не используется для символьных литералов в VB.NET, как, например, в C#, заключается в том, что они используются в качестве сокращения для команды REM.)

В Javascript, например, нет символьного типа данных, поэтому нет способа указать символьный литерал. Вы представляли бы символ либо как одну строку символов, либо как числовой код.

Автоматическая оптимизация одной символьной строки для символа вряд ли будет хорошим решением, если вы также не сделаете автоматическое преобразование обратно в строку, если это необходимо. На практике это, однако, будет таким же, как автоматическое преобразование одной символьной строки в символ, когда это необходимо.

Смежные вопросы