Мне интересно, можно ли добиться такого?
У меня такая площадка:
protocol Foo {
func testPrint()
}
extension Foo {
func testPrint() {
print("Protocol extension call")
}
}
struct Bar: Foo {
func testPrint() {
// Calling self or super go call default implementation
self.testPrint()
print("Call from struct")
}
}
let sth = Bar()
sth.testPrint()
Я могу предоставить реализацию по умолчанию, extension
но что, если Bar
потребуется все, что есть в реализации по умолчанию, плюс дополнительные вещи?
Это чем-то похоже на вызов super.
методов в class
es для выполнения требования реализации каждого свойства и т.д., но я не вижу возможности добиться того же с помощью structs
.
Foo.testPrint(self)()
- проблема в том, что он не работает из-за ошибки сегментации (проверено как на 7.0 GM, так и на бета-версии 7.1)