Okay. I coudln't find official documentation on this, and I don't currently 
need to do this, but wanted to fully understand it.

> On Nov 15, 2016, at 17:27 , zh ao <owe...@gmail.com> wrote:
> 
> 'Default' implementation in protocol extension is used as fail safe. You 
> should not consider it like something super class does. If you want it that 
> way, use class inheritance instead.
> 
> Zhaoxin
> 
> Get Outlook for iOS
> 
> _____________________________
> From: Rick Mann via swift-users <swift-users@swift.org>
> Sent: 星期三, 十一月 16, 2016 07:51
> Subject: Re: [swift-users] Attempting to call default protocol implementation 
> crashes Playground
> To: Dan Loewenherz <d...@lionheartsw.com>
> Cc: swift-users <swift-users@swift.org>
> 
> 
> 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 <d...@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@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
> > rm...@latencyzero.com
> > 
> > 
> > _______________________________________________
> > swift-users mailing list
> > swift-users@swift.org
> > https://lists.swift.org/mailman/listinfo/swift-users
> > 
> 
> 
> -- 
> Rick Mann
> rm...@latencyzero.com
> 
> 
> _______________________________________________
> swift-users mailing list
> swift-users@swift.org
> https://lists.swift.org/mailman/listinfo/swift-users
> 
> 


-- 
Rick Mann
rm...@latencyzero.com


_______________________________________________
swift-users mailing list
swift-users@swift.org
https://lists.swift.org/mailman/listinfo/swift-users

Reply via email to