Символы и строки в 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
компилятор позаботится об этом.