> On Jul 16, 2016, at 9:32 AM, Matthew Johnson via swift-evolution 
> <swift-evolution@swift.org> wrote:
> Sent from my iPhone
> 
> On Jul 16, 2016, at 10:59 AM, T.J. Usiyan via swift-evolution 
> <swift-evolution@swift.org <mailto:swift-evolution@swift.org>> wrote:
> 
>> Yes, sorry, my point was that this consideration isn't spelled out. 
>> 
>> Another question is whether or not making a subclass of an open class public 
>> by default is what we want. I see why it would be, I just think that it is a 
>> wrinkle to default to internal otherwise but not here.
> 
> I can't think of any good reason to assume a specific class should be public 
> just because it is a subclass of an open class.  The internal default would 
> still be the right default in this case.

Right, there's no new restriction here.  Of course you can make a private or 
internal subclass of a public open class — otherwise, you'd have to publicize 
every subclass of (say) UIViewController.

John.

> 
>> 
>> On Sat, Jul 16, 2016 at 10:32 AM, Karl <razie...@gmail.com 
>> <mailto:razie...@gmail.com>> wrote:
>> 
>> > On 16 Jul 2016, at 16:10, T.J. Usiyan via swift-evolution 
>> > <swift-evolution@swift.org <mailto:swift-evolution@swift.org>> wrote:
>> >
>> > What happens if I want an `internal` subclass of an `open` class?
>> 
>> That should be allowable. You may want some optimised implementations, 
>> similar to how Apple used class-clusters in Obj-C. I don’t think that same 
>> pattern is exactly possible in Swift (I don’t think a class can set ‘self’ 
>> in its initialiser, or at least it couldn’t in Swift 1). But the same 
>> principle applies - you may want a public class which you don’t allow others 
>> to subclass, but you might have a static method or other function which 
>> returns an internal optimised implementation.
>> 
>> If you used a protocol rather than a concrete type in that case, 
>> theoretically others could conform to it and throw their own objects back at 
>> your code, which goes against the point of this proposal.
>> 
>> We might think about creating ‘sealed’ protocols, too.
>> 
>> Karl
>> 
>> _______________________________________________
>> swift-evolution mailing list
>> swift-evolution@swift.org <mailto:swift-evolution@swift.org>
>> https://lists.swift.org/mailman/listinfo/swift-evolution 
>> <https://lists.swift.org/mailman/listinfo/swift-evolution>
> _______________________________________________
> swift-evolution mailing list
> swift-evolution@swift.org <mailto:swift-evolution@swift.org>
> https://lists.swift.org/mailman/listinfo/swift-evolution 
> <https://lists.swift.org/mailman/listinfo/swift-evolution>
_______________________________________________
swift-evolution mailing list
swift-evolution@swift.org
https://lists.swift.org/mailman/listinfo/swift-evolution

Reply via email to