On Jun 16, 2015, at 22:24 , Roland King <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.



_______________________________________________

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

Reply via email to