Open swift-ci opened 8 years ago
As a language change, this should go through the Swift Evolution Process.
Comment by Mateusz Zając (JIRA)
@belkadan would you rather see it as a PR to https://github.com/apple/swift-evolution repo?
Comment by Radek Pietruszewski (JIRA)
cojoj (JIRA User) You should start a discussion on the Evolution mailing list first before submitting a PR
Comment by Brian (JIRA)
You can do `(self as Foo).testPrint()` to invoke the default method. Not the most elegant or discoverable syntax, but.
Related discussion for enums: https://forums.swift.org/t/super-description-for-enums/49174
Additional Detail from JIRA
| | | |------------------|-----------------| |Votes | 0 | |Component/s | Compiler | |Labels | Improvement | |Assignee | None | |Priority | Medium | md5: 222f3e1dbdbb54005302e8c206e80dfbrelates to:
Issue Description:
If you define a simple protocol like:
And than you provide a default implementation for testPrint() method in protocol extensions like:
You aren't allowed to call the fault implementation from the structure eg.
This is some sort of limitation as often happens that a default implementation is providing a major part of implementation and only one, simple line is changed in actual struct implementation. If you're using classes you can achieve this by creating a base class and calling a method on super. If you consider structs, there's no such possibility and you always have to write a whole implementation from scratch in each structure which conforms to the protocol.
You can use composition by creating nested structure, but it's neither logical nor clean... It's rather a hack...