Какой текст будет выведен? (пример 19)

Будет напечатано Mike: personB — отдельное значение структуры, и изменение его name не меняет personA.

Короткий ответ

Что ответить на собеседовании

Будет напечатано Mike: personB — отдельное значение структуры, и изменение его name не меняет personA.

Подробный разбор

Ответ с пояснениями

Условие

В Swift структуры являются типами‑значениями. При присвоении одной переменной другой создаётся копия. В приведённом примере создаётся структура Human с полем name. Затем объект копируется, после чего у копии меняется имя. Нужно определить, какое значение будет напечатано в конце.

struct Human {
    var name: String
}

var personA = Human(name: "Mike")
var personB = personA
personB.name = "Jack"

print(personA.name)

Ответ

Будет напечатано Mike: personB — отдельное значение структуры, и изменение его name не меняет personA.

Human объявлен как struct, поэтому присваивание personB = personA копирует значение. После personB.name = "Jack" у первой переменной по-прежнему name == "Mike", у второй — "Jack". Внутренние оптимизации хранения строк не меняют эту семантику. Если бы Human был классом, обе переменные могли бы ссылаться на один экземпляр, и результат был бы другим.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее