[swift-users] Attempting to call default protocol implementation crashes Playground
Rick Mann
rmann at latencyzero.com
Tue Nov 15 17:51:14 CST 2016
Well, this is a standard protocol default implementation. I was experimenting to see if it was possible to call the default implementation after providing a concrete implementation.
> On Nov 15, 2016, at 14:47 , Dan Loewenherz <dan at lionheartsw.com> wrote:
>
> What are you trying to accomplish here, more concretely?
>
> My first thought is that you shouldn't implement the same function in both a protocol extension and a conforming class. Why not just give them different names and call the function from within the extension instead of from the class? E.g.
>
> protocol FooPro {
> func _fooFunc()
> }
>
> extension FooPro {
> func fooFunc() {
> print("fooFunc default")
> _fooFunc()
> }
> }
>
> class FooClass: FooPro {
> func _fooFunc() {
> print("fooFunc FooClass")
> }
> }
>
> let fc = FooClass()
> fc.fooFunc()
>
> Dan
>
> On Tue, Nov 15, 2016 at 4:28 PM, Rick Mann via swift-users <swift-users at swift.org> wrote:
> The following gives Xcode 8.1 a very hard time. Eventually I get a Bad Access on the last line. I'm guessing it's a recursive call. Is there any way to call the default implementation from a "real" implementation?
>
> protocol FooPro
> {
> func fooFunc()
> }
>
> extension FooPro
> {
> func
> fooFunc()
> {
> print("fooFunc default")
> }
> }
>
> class FooClass : FooPro
> {
> func
> fooFunc()
> {
> (self as FooPro).fooFunc()
> print("fooFunc FooClass")
> }
> }
>
> let fc: FooPro = FooClass()
> fc.fooFunc()
>
>
> Thanks!
>
>
> --
> Rick Mann
> rmann at latencyzero.com
>
>
> _______________________________________________
> swift-users mailing list
> swift-users at swift.org
> https://lists.swift.org/mailman/listinfo/swift-users
>
--
Rick Mann
rmann at latencyzero.com
More information about the swift-users
mailing list