Yes, I understand this. I was just wondering if there was a naming convention I should use to differentiate them.
Should I use a few letters as a prefix? Should I use the full protocol name as a prefix? Or is there another suggestion for a naming convention? I'm also curious about any naming conventions I should use to get around collisions with other libraries' protocol associatedtypes. On May 31, 2017 at 16:26:52, Slava Pestov (spes...@apple.com) wrote: > > On May 31, 2017, at 4:16 PM, Steven Brunwasser <sbrunwas...@gmail.com> > wrote: > > Basically, my library contains a bunch of collection-like protocols, which > can be combined in different ways and can be compatible with each other in > certain combinations when the proper types align. Naturally, they all have > an Element associatedtype, but I need to allow for the possibility where > two of these collection protocols are implemented in the same structure > that requires different type definitions for each protocols' Element. > > > Oh, I understand now. This is intentionally not supported — associated > types with the same name from different protocols must all be implemented > by the same typealias in the conforming type. > > Slava > > > I’ve been trying to make some other protocols to simplify some > definitions, but specifying a parent protocol’s associated type within a > child protocol doesn’t seem to work. > > protocol Buzz: Bar { > typealias Container = A > } > > struct BuzzImpl: Buzz {} // *error: type ‘BuzzImpl' does not conform to > protocol ‘Buzz'* > > On May 31, 2017 at 4:02:43 PM, Slava Pestov (spes...@apple.com) wrote: > > Can you give an example of a problematic name collision? Does fully > qualifying names not help? > > Slava > > On May 31, 2017, at 4:01 PM, Steven Brunwasser via swift-users < > swift-users@swift.org> wrote: > > Hi, > > I have a library which uses a few generic protocols with identically named > associated types that may not always be specified identically by > implementors. > > protocol Foo { > associatedtype Container > associatedtype Element > } > > protocol Bar { > associatedtype Container > associatedtype Element > } > > struct Baz: Foo, Bar { > // Implement using two different Container/Element types. > } > > Is there a consensus on some naming convention for associatedtypes to > mitigate name collisions? > Would it be acceptable to add namespace prefixes to these types? > > protocol Foo { > associatedtype FooContainer > associatedtype FooElement > } > > I’m using the dictionary and thesaurus to find some alternative names I > could use, but the ones already used are so the most sensical semantically. > > Do you have any suggestions? > > Thanks, > - Steve Brunwasser > _______________________________________________ > swift-users mailing list > swift-users@swift.org > https://lists.swift.org/mailman/listinfo/swift-users > > >
_______________________________________________ swift-users mailing list swift-users@swift.org https://lists.swift.org/mailman/listinfo/swift-users