I understand. But why would you need to know if it's a class or a protocol to use the type? What understanding comes from knowing this information?
I am honestly trying to understand the problem here and it feels like I'm overlooking something. Brandon > On Jul 22, 2016, at 10:12 AM, Charlie Monroe <[email protected]> > wrote: > > Coming to someone elses code, it adds an extra effort to understand the > declaration. Putting inheritance and conformance separately makes the > declaration easier to read. At least for me. > >> On Jul 22, 2016, at 4:05 PM, Brandon Knope <[email protected]> wrote: >> >> Honest question: what is actually confusing about the current behavior? >> >> I.E. What is important about knowing whether "DataSource" is a class or a >> protocol? >> >> I thought the blurred distinction was intentional? >> >> Brandon >> >>> On Jul 22, 2016, at 9:47 AM, Charlie Monroe via swift-evolution >>> <[email protected]> wrote: >>> >>> I agree that this is an issue. Mostly nowadays when more and more classes >>> in Swift do not have a superclass - it simply looks weird: >>> >>> class MyClass: DataSource >>> >>> One doesn't know whether "DataSource" is a class, protocol, etc. >>> Nevertheless, I do not feel that :: is the answer. I really liked, how ObjC >>> did it (which isn't possible with the generics now - is it?), but what >>> about something like this? >>> >>> class BaseClass [SomeDelegate, OtherDelegate, ProtocolX] >>> class MyClass: BaseClass [SomeDelegate, OtherDelegate, ProtocolX] >>> extension MyClass [OtherProtocol] >>> >>> >>>> On Jul 22, 2016, at 3:14 PM, Vladimir.S via swift-evolution >>>> <[email protected]> wrote: >>>> >>>> I remember that this was discussed, but can't find any decision regarding >>>> this.. So, as a last chance, don't we want in Swift 3.0, as big source >>>> breaking change, separate class inheritance and protocol conformance in >>>> syntax? >>>> >>>> Sorry if there was a decision about this suggestions. Please let know in >>>> this case. >>>> >>>> I.e. when I see the following I can't understand if the class inherits >>>> from base class and conforms to protocols or just conforms to two >>>> protocols: >>>> >>>> class MyClass : First, Second, Third { >>>> } >>>> >>>> We don't have a rule to name protocols with 'Protocol'/other >>>> suffix/prefix, or classes with 'T'/'C' prefix or something like this, so I >>>> believe to improve the clarity of code we should separate in syntax >>>> inheritance and conformance. >>>> >>>> As I understand we should discuss changes in these areas: >>>> >>>> 1. class inheritance : >>>> class Child: BaseClass >>>> >>>> 2. class conformance : >>>> class Child: SomeProtocol1, SomeProtocol2 >>>> >>>> 3. class inheritance + conformance : >>>> class Child: BaseClass, SomeProtocol1, SomeProtocol2 >>>> >>>> 4. protocol conformance for structs: >>>> struct Struct: SomeProtocol1, SomeProtocol2 >>>> >>>> 5. protocol inheritance: >>>> protocol Child: BaseProtocol1, BaseProtocol2 >>>> >>>> >>>> My suggestions: >>>> >>>> I) separate inheritance with double colon : >>>> >>>> 1. class inheritance : >>>> class Child:: BaseClass >>>> >>>> 2. class conformance : >>>> class Child: SomeProtocol1, SomeProtocol2 >>>> >>>> 3. class inheritance + conformance : >>>> class Child:: BaseClass : SomeProtocol1, SomeProtocol2 >>>> >>>> 4. protocol conformance for structs: >>>> struct Struct: SomeProtocol1, SomeProtocol2 >>>> >>>> 5. protocol inheritance: >>>> protocol Child:: BaseProtocol1, BaseProtocol2 >>>> >>>> >>>> II) in class definition use parenthesis to separate inheritance and >>>> conformance : >>>> >>>> 1. class inheritance : >>>> class Child: BaseClass >>>> >>>> 2. class conformance : >>>> class Child: (SomeProtocol1, SomeProtocol2) >>>> >>>> 3. class inheritance + conformance : >>>> class Child: BaseClass (SomeProtocol1, SomeProtocol2) >>>> >>>> 4. protocol conformance for structs: >>>> struct Struct: SomeProtocol1, SomeProtocol2 >>>> or >>>> struct Struct: (SomeProtocol1, SomeProtocol2) >>>> should be discussed >>>> >>>> 5. protocol inheritance: >>>> protocol Child: BaseProtocol1, BaseProtocol2 >>>> >>>> >>>> III) special word like 'conforms' >>>> >>>> 1. class inheritance : >>>> class Child: BaseClass >>>> >>>> 2. class conformance : >>>> class Child: conforms SomeProtocol1, SomeProtocol2 >>>> or >>>> class Child conforms SomeProtocol1, SomeProtocol2 >>>> >>>> 3. class inheritance + conformance : >>>> class Child: BaseClass conforms SomeProtocol1, SomeProtocol2 >>>> >>>> 4. protocol conformance for structs: >>>> struct Struct: conforms SomeProtocol1, SomeProtocol2 >>>> or >>>> struct Struct conforms SomeProtocol1, SomeProtocol2 >>>> >>>> 5. protocol inheritance: >>>> protocol Child: BaseProtocol1, BaseProtocol2 >>>> >>>> >>>> Thoughts? >>>> _______________________________________________ >>>> swift-evolution mailing list >>>> [email protected] >>>> https://lists.swift.org/mailman/listinfo/swift-evolution >>> >>> _______________________________________________ >>> swift-evolution mailing list >>> [email protected] >>> https://lists.swift.org/mailman/listinfo/swift-evolution >
_______________________________________________ swift-evolution mailing list [email protected] https://lists.swift.org/mailman/listinfo/swift-evolution
