Символы и строки в Swift

Читая документацию и этот ответ, я вижу, что могу инициализировать символ Unicode одним из следующих способов:

let narrowNonBreakingSpace: Character = "\u{202f}"
let narrowNonBreakingSpace = "\u{202f}"

Как я понимаю, второй на самом деле будет String. И в отличие от Java, они оба используют двойные кавычки (а не одинарные кавычки для символов). Я видел несколько примеров, хотя, где вторая форма (без Character) используется, хотя переменная содержит только один символ. Это люди просто ленивые или забывают писать Character? Или Swift заботится обо всех деталях, и мне не нужно беспокоиться об этом? Если я знаю, что у меня есть константа, которая содержит только одно значение Unicode, я должен всегда использовать Character?

2 ответа

Решение

Если тип не указан, Swift создаст String экземпляр из строкового литерала при создании переменной или константы, независимо от длины. поскольку StringОни настолько распространены в методах Swift и Cocoa/Foundation, что вам следует использовать их, если только у вас нет особой потребности в Character- иначе вам просто нужно преобразовать в String каждый раз, когда вам нужно его использовать.

Компилятор Swift выведет тип строки как символьный во втором случае. Добавление : Character для этого действительно не нужно. В этом случае я бы добавил это, потому что легко ошибочно предположить, что этот символ является строкой, и другой разработчик может попытаться обработать его как таковой. Однако компилятор будет выдавать ошибки из-за этого, поскольку он выводит тип этой строки не как строку, а как символ.

Так что, по моему мнению, добавление Character - это не просто лень или забвение, это вопрос доверия компилятору к правильному выводу типа этой константы en, чтобы полагаться на то, что компилятор выдает правильную ошибку всякий раз, когда я пытаюсь использовать эту константу неправильно,

Компилятор Swift в основном заботится обо всех деталях, и это не имеет значения, если вы добавите Characterкомпилятор позаботится об этом.

Другие вопросы по тегам