Почему существует тип Char для однобуквенных строк? - PullRequest
0 голосов
/ 05 октября 2018

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

1 Ответ

0 голосов
/ 05 октября 2018

Ой, это ужасное объяснение, и мне жаль, что вам пришлось это прочитать.

Итак, прежде всего, Char - это модуль, а не тип.Тип называется char.Это может показаться педантичным, но люди, пришедшие из объектно-ориентированных языков, часто путаются с модулями, разработанными специально для типа, поскольку они выглядят очень объектно-подобными, и может показаться, что они должны быть объектами, поскольку это кажется настолько естественными удобно из ОО.Но это не так, они не должны, и это, безусловно, не помогает, если плохо написанная документация подкрепляет такие ошибочные концепции.

В любом случае, к актуальному вопросу: почему тип char существует отдельно отstring тип?Потому что char - это то, из чего сделаны string. Это не «однобуквенная строка», это сама буква , а точнее символ (чтоконечно, откуда взято название «char»).Строка - это просто array из char s.

Без типа char вы не сможете напрямую манипулировать элементами string.Вы даже не сможете сравнить одну строку с другой, если сравнение строк не жестко запрограммировано в языке.Что является нетривиальной проблемой с трудными и неочевидными компромиссами , и на самом деле просто перемещает проблему туда, где труднее иметь дело.

Даже если у вас есть трудныеСравнение кодированных строк и может использовать однобуквенные строки вместо char s, теперь у вас нет гарантии на уровне типов, что строка содержит только одну букву и, следовательно, придется добавлять проверки во время выполнения, чтобы убедиться, что строка не пуста илидлиннее, чем одна буква, и решите, что делать, если это так.Все эти проверки быстро приведут к значительным потерям производительности, а скрытые решения - к значительному когнитивному бремени.

В качестве альтернативы вы, конечно, можете просто делать то, что делают динамические языки, такие как JavaScript и Python, то естьврезаться или вести себя неожиданно, когда планеты не выстроились в ряд.Но я полагаю, что вас интересует Разум, потому что вы устали от этого.

...