[swift-evolution] Proposal: Change of syntax for class protocols
Douglas Gregor
dgregor at apple.com
Mon Dec 7 16:04:29 CST 2015
> On Dec 7, 2015, at 8:58 AM, Joe Groff via swift-evolution <swift-evolution at swift.org> wrote:
>
>>
>> On Dec 7, 2015, at 8:00 AM, Matthew Cheok via swift-evolution <swift-evolution at swift.org> wrote:
>>
>> Currently, we declare class protocols with the following syntax:
>>
>> protocol TestProtocol: class, OtherProtocol {}
>>
>> This is odd for a few reasons:
>> 1) The keyword class exists in the middle of the declaration
>> 2) The keyword class follows the colon and looks a lot like inheritance
>> 3) The keyword class occupies a somewhat arbitrary first position after the colon (otherwise we have an error)
>>
>> We also have another use of the class keyword as a modifier when declaring class methods:
>>
>> class func doSomething() {}
>>
>> I’m suggesting a change of syntax that rectifies the above issues:
>>
>> class protocol TestProtocol: OtherProtocol {}
>>
>> Would love to hear other thoughts on this.
>
> The constraint syntax is used because, in the fullness of time, it should also be applicable to type parameters and associated types:
>
> protocol Foo { typealias T: class }
>
> func foo<T: class>(x: T)
Right. This is exactly the reason why we have the syntax
protocol X : class { … }
and why I’m against changing the current syntax.
- Doug
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.swift.org/pipermail/swift-evolution/attachments/20151207/6f351b03/attachment.html>
More information about the swift-evolution
mailing list