Sobes.tech
Junior — Senior
70

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

Компании, где спрашивали:

AvitoAvito
Условие задачи

В этом фрагменте кода демонстрируется, как работает переопределение свойства, объявленного в протоколе, когда у протокола есть реализация по умолчанию в расширении, а класс‑конформер предоставляет собственную реализацию. Сравнивается вывод свойства при обращении к объекту через его конкретный тип и через тип протокола.

protocol TheProtocol {
    var value: String { get }
}

extension TheProtocol {
    var value: String {
        return "in TheProtocol"
    }
}

class TheClass: TheProtocol {
    var value: String {
        return "in TheClass"
    }
}

let theClass = TheClass()
let theProtocol: TheProtocol = theClass

print(theClass.value)      // ?
print(theProtocol.value)   // ?

Ожидаемый результат: оба вызова печатают "in TheClass".