Что будет выведено в примере №8

Последняя строка не вызывает удаление: у popLast отсутствуют (). Для mutating-метода попытка использовать его как значение также может быть ошибкой компиляции.

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

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

Последняя строка не вызывает удаление: у popLast отсутствуют (). Для mutating-метода попытка использовать его как значение также может быть ошибкой компиляции.

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

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

Условие

В примере создаются два наследника базового контроллера, заполняются массивы строк и объектов, после чего один контроллер получает ссылки на массивы другого. Затем вызывается метод удаления последнего элемента у массива строк. Определите, какие значения останутся в массивах после выполнения кода.

import Foundation

class MyView: CustomStringConvertible {
    let index: UInt
    var ID: String

    init(withIndex index: UInt) {
        self.index = index
        ID = String(index)
    }

    var description: String {
        return "(\(index), \(ID))"
    }
}

class MyViewController {
    var strings: [String] = []
    var views: [MyView] = []
}

class FirstViewController: MyViewController {}
class SecondViewController: MyViewController {}

let firstVC = FirstViewController()
firstVC.strings = ["One", "Two", "Three"]
firstVC.views = [MyView(withIndex: 1), MyView(withIndex: 2), MyView(withIndex: 3)]

let secondVC = SecondViewController()
secondVC.strings = firstVC.strings
secondVC.views = firstVC.views

secondVC.strings.popLast

Ответ

Последняя строка не вызывает удаление: у popLast отсутствуют (). Для mutating-метода попытка использовать его как значение также может быть ошибкой компиляции.

Исправьте строку на secondVC.strings.popLast(). Тогда firstVC.strings останется ["One", "Two", "Three"], а secondVC.strings станет ["One", "Two"], потому что Swift Array имеет семантику значения. Массивы views в этом фрагменте вообще не изменяются; они содержат ссылки на одни и те же три MyView. В программе нет print, поэтому даже исправленный код сам по себе ничего не выводит.

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

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

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

Подробнее