Swift Academy · Урок

Символы и графемные кластеры

Узнайте, почему один Character может состоять из нескольких скалярных значений.

Урок 1 из 413 шагов

«Символы и графемные кластеры» — бесплатный урок Swift Academy на CoddyKit. Это урок 1 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Swift Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Swift Academy содержит 4 уроков всего.

Тип Character

В Swift тип Character представляет один воспринимаемый человеком символ. String — это коллекция таких символов.

let letter: Character = "A"
print(letter)
print(type(of: letter))

Character и String

Литерал в двойных кавычках по умолчанию имеет тип String. Укажите тип Character, чтобы получить значение одного символа.

let s = "A"
let c: Character = "A"
print(type(of: s), type(of: c))

Расширенные кластеры графем

В Swift Character — это расширенный кластер графем: один или несколько скаляров Unicode, которые вместе отображаются как один видимый символ.

let e: Character = "e"
print(e)
print("A Character is one visible symbol")

Комбинируемые знаки

Буква с диакритическим знаком может состоять из основной буквы и комбинируемого знака, но Swift всё равно рассматривает эту пару как один Character.

let combined: Character = "e\u{301}"
print(combined)
print("Displayed as one accented e")

Эмодзи как один символ

Многие эмодзи являются одиночными кластерами графем, поэтому считаются одним Character, даже если внутри используют несколько байтов.

let smiley: Character = "\u{1F600}"
print(smiley)

Сложные кластеры эмодзи

Некоторые эмодзи объединяют несколько скаляров — оттенки кожи и соединители нулевой ширины — в один видимый символ, который Swift правильно считает одним Character.

let family = "\u{1F468}\u{200D}\u{1F469}\u{200D}\u{1F467}"
print("Count:", family.count)

Перебор символов

С помощью for-in можно пройти по строке и посетить каждый Character по порядку.

for ch in "Hi!" {
    print(ch)
}

Создание String из символов

Можно создать String из массива значений Character.

let chars: [Character] = ["S", "w", "i", "f", "t"]
let word = String(chars)
print(word)

Добавление символов

Используйте append, чтобы добавить Character в конец строки.

var greeting = "Hello"
greeting.append("!")
print(greeting)

Сравнение символов

Значения Character можно сравнивать на равенство, что удобно при просмотре текста.

let target: Character = "x"
let found = "fox".contains { $0 == target }
print("Contains x:", found)

Почему кластеры графем важны

Если рассматривать воспринимаемые пользователем символы как отдельные единицы, длина строк и индексация соответствуют тому, что люди действительно видят, в том числе для эмодзи и букв с диакритическими знаками.

let cafe = "caf\u{e9}"
print("Visible characters:", cafe.count)

Быстрая проверка

Вспомните, что представляет собой Character в Swift.

Повторение: символы и кластеры графем

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

let text = "ab\u{1F600}"
print("Characters:", text.count)
for ch in text { print(ch) }
Можно начать бесплатно

Изучай Swift с ИИ-репетитором — бесплатно

Пиши и запускай код прямо в браузере, получай мгновенную помощь от ИИ-репетитора 24/7 и продолжи учиться на сайте или в приложении.

Курсы
122
Уроки
409

Часто задаваемые вопросы

Урок «Символы и графемные кластеры» бесплатный?

Да — полный текст урока «Символы и графемные кластеры» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Swift Academy, подпишись на CoddyKit PRO. Курс Swift Academy содержит 4 уроков всего.

Чему я научусь в уроке «Символы и графемные кластеры»?

Узнайте, почему один Character может состоять из нескольких скалярных значений. Ты практикуешь Swift Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать Swift Academy?

Предыдущий опыт не требуется. Swift Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 1 из 4.

Сколько времени занимает урок «Символы и графемные кластеры»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке Swift Academy?

Да. Каждый урок Swift Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

Все уроки этого курса

  1. Символы и графемные кластеры
  2. Скалярные значения Unicode и кодовые точки
  3. Подсчёт и перебор символов
  4. Представления кодировок: utf8, utf16, unicodeScalars
← Назад к Swift Academy