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

Что такое дженерики в программировании?

Sobes Copilot

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

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

sobes.tech AI

Дженерики (Generics) — это способ писать гибкий, многократно используемый код, который работает с любыми типами данных, сохраняя при этом типовую безопасность. Они позволяют отложить указание конкретного типа до момента использования.

Основные преимущества:

  • Избегание дублирования кода: Можно написать один алгоритм/структуру данных, работающую с разными типами.
  • Типовая безопасность: Компилятор проверяет соответствие типов во время компиляции, предотвращая ошибки времени выполнения, связанные с неправильными типами.
  • Более выразительный код: Яснее показывает намерения разработчика касательно типов данных.

Пример использования в Swift:

Обобщенная структура Stack:

struct Stack<Element> {
    // дженерик Element используется как тип элементов массива
    private var items: [Element] = []

    // дженерик Element используется как тип параметра
    mutating func push(_ item: Element) {
        items.append(item)
    }

    // дженерик Element используется как тип возвращаемого значения
    mutating func pop() -> Element {
        return items.removeLast()
    }
}

Использование со строками:

var stringStack = Stack<String>()
stringStack.push("hello")
stringStack.push("world")
let lastString = stringStack.pop() // lastString имеет тип String

Использование с числами:

var intStack = Stack<Int>()
intStack.push(1)
intStack.push(2)
let lastInt = intStack.pop() // lastInt имеет тип Int

Без дженериков пришлось бы писать отдельные структуры для Stack<String>, Stack<Int> и т.д., либо использовать менее безопасные подходы (например, Any).