Какой тип данных у строкового литерала в Swift?

«Какой тип данных у строкового литерала в Swift?» — вопрос из категории Swift Core, который задают на 22% собеседований IOS Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Строковый литерал в Swift имеет тип String, который является структурой (value type), а не классом.

Пример и проверка типа:

let greeting = "Hello, World!" // Тип выводится как String
print(type(of: greeting)) // Выводит: String

// Явная аннотация типа
let title: String = "Swift Guide"

Особенности типа String:

  • Это value type, копируемый при присваивании или передаче в функцию.
  • Представляет коллекцию символов Unicode, корректно обрабатывая эмодзи и сложные графемы.
  • Реализует протоколы ExpressibleByStringLiteral, Collection, Equatable, Comparable.
  • Для эффективности работы с подстроками использует тип Substring, который делит буфер памяти с исходной строкой.

Связь с Objective-C: Тип NSString из Foundation является классом (reference type). Swift обеспечивает автоматический мост (bridging) между String и NSString, когда импортируется модуль Foundation.