> On 17 Jun 2015, at 13:33, Quincey Morris > <quinceymor...@rivergatesoftware.com> wrote: > > On Jun 16, 2015, at 22:24 , Roland King <r...@rols.org > <mailto:r...@rols.org>> wrote: >> >> 1) making FooImplementedWithArray internal downgrades the foo() function to >> internal within that protocol, no longer is it public (this is made explicit >> by a compiler warning which tells you you’re implementing an internal >> function as public if you try doing it) >> 2) anything implementing FooImplementedWithArray can at *most* be internal, >> you can’t have a public class implement an internal protocol > > What about this: > >> public protocol Foo >> { >> mutating func foo( Int )->Void >> } >> >> public protocol FooImplementedWithArray : Foo >> { >> } >> >> extension FooImplementedWithArray >> { >> var bar = Array<Int> () >> public mutating func foo( i : Int ) -> Void { bar.append( i ) } >> } > > Then Foo’s that don’t use a bar array will provide their own implementation, > and FooImplementedWithArray’s will default to the extension’s empty array, or > they can override bar with some other implementation. At least, that’s what > it looks like to me. :) > > Sorry if you said that already. In your explanation, I can’t seem to separate > what you want from what you’ve tried. >
No - can’t have a stored property in an extension var bar = Array<Int>() // <— nope _______________________________________________ Cocoa-dev mailing list (Cocoa-dev@lists.apple.com) Please do not post admin requests or moderator comments to the list. Contact the moderators at cocoa-dev-admins(at)lists.apple.com Help/Unsubscribe/Update your Subscription: https://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com This email sent to arch...@mail-archive.com