> Как сделать так, чтобы функция имела доступ к оригинальной структуре без копирования (iOS, Swift)

Уровень: senior · Роль: mobile · Категория: Технические вопросы

Компании: Яндекс

Стек: iOS, Swift

> Пример ответа

В Swift для доступа к оригинальной структуре без копирования используется ключевое слово inout в параметрах функции. Это позволяет передавать структуру по ссылке, а не по значению, избегая накладных расходов на копирование. Пример:

SWIFT
struct User {
var name: String
var age: Int
}
func updateUser(_ user: inout User) {
user.name = "Новое имя"
user.age += 1
}
var currentUser = User(name: "Иван", age: 30)
updateUser(&currentUser) // Передача по ссылке с &
print(currentUser.name) // "Новое имя"

Также можно использовать классы вместо структур, так как они передаются по ссылке по умолчанию. Однако, если структура обязательна (например, для value semantics), inout - оптимальное решение. Важно помнить, что inout не гарантирует отсутствие копирования в 100% случаев (компилятор может оптимизировать), но в большинстве сценариев оно работает как передача по ссылке.

> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?

Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью