Назад к вопросам
Junior
136
questionbank

Что такое enum, raw value и associated value в Swift?

Sobes Copilot

Получайте ответы в реальном времени

Ответ от нейросети

sobes.tech AI

Enum (перечисление) — это тип, определяющий группу связанных значений. Raw value — это предустановленное значение (например, Int, String, Double), которое можно связать с каждым элементом перечисления. Associated value — это значение, которое может быть добавлено к конкретному элементу перечисления для хранения дополнительной информации, не являющейся частью типа raw value.

enum HTTPStatus: Int { // raw value Int
    case success = 200
    case notFound = 404
    case internalServerError = 500
    case custom(code: Int, message: String) // associated value
}

let successStatus = HTTPStatus.success
print(successStatus.rawValue) // 200

let customStatus = HTTPStatus.custom(code: 418, message: "I'm a teapot")

switch customStatus {
case .custom(let code, let message):
    print("Custom status code: \(code), message: \(message)")
default:
    print("Other status")
}

Основные отличия:

Признак Raw Value Associated Value
Тип Предопределенный (Int, String и др.) Любой тип(ы)
Связь Привязан к каждому элементу при объявлении Привязан к конкретному экземпляру элемента
Назначение Идентификация элемента Хранение дополнительных данных элемента
Обязательность Опционально Определяется при объявлении элемента