Junior — Senior
70
Что будет выведено в примере №39
Компании, где спрашивали:
Условие задачи
В этом фрагменте кода демонстрируется, как работает переопределение свойства, объявленного в протоколе, когда у протокола есть реализация по умолчанию в расширении, а класс‑конформер предоставляет собственную реализацию. Сравнивается вывод свойства при обращении к объекту через его конкретный тип и через тип протокола.
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".