[swift-evolution] Proposal: Change of syntax for class protocols
Joe Groff
jgroff at apple.com
Mon Dec 7 10:58:05 CST 2015
> 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)
-Joe
More information about the swift-evolution
mailing list