[swift-evolution] [SE-0011] Re-considering the replacement keyword for "typealias"
james at supmenow.com
Wed Dec 23 17:06:18 CST 2015
If we made class, structs, protocols and functions use the same generics
syntax then I think it would make it more consistent rather than arguing
about which keyword to use. I am for-ever being tripped up by lack of
generics in the language.
func first() -> T?
var value: Value
func makeACell<T>() -> T
func first() -> Item?
class IntBag : Collection<Int> //We bind protocol "associated type" using
generic syntax when subclassing. In this case we are saying Item should be
class Array<Item>: Collection<Item> //We bind protocol "associated type"
using generic syntax when subclassing. In this case we are saying Item
should be the same type as the generic type for Array
On Wed, Dec 23, 2015 at 10:58 PM, James Campbell <james at supmenow.com> wrote:
> They are placeholders because in the protocol:
> prtocotol Collection
> placeholder Item
> func first() -> Item?
> Item is a placeholder for a concrete type, at this moment this is a
> concept "A collection should return an item of a type" but we don't know
> what that type is as its a plaeholder for a type.
> therefore in:
> class IntCollection: Collection
> placeholder Item = Int
> We are saying that the placeholder should now become a concrete type. In
> my eyes associated types are nothing more than generics for protocols which
> in turn could be argued is some kind of placeholder.
> Associated type means nothing to me, associated to what ? A type could be
> associated to many things like a variable, or a generic or whatever. A
> placeholder to mean does what it says on the tin. If we moved to protocols
> using a syntax closer to generics for classes then I think it would be
> simpilar to grasp for beginners .
> On Wed, Dec 23, 2015 at 9:35 PM, Jordan Rose <jordan_rose at apple.com>
>> James or Erica (or someone else), can you explain what makes these types
>> "placeholders"? I don't think of the other requirements in a protocol as
>> "placeholder properties" or "placeholder methods".
>> My explanation of these things is "When a particular type X conforms to a
>> protocol, you can ask about the types that X uses to implement the
>> requirements of the protocol". I guess we could call them "related types"
>> instead of "associated types", but that doesn't seem significantly
>> > On Dec 23, 2015, at 12:42, James Campbell via swift-evolution <
>> swift-evolution at swift.org> wrote:
>> > The thing is associated type means nothing to me, it's too technical.
>> Placeholder type I think would be better even if it's only what we called
>> it in the documentation
>> > Sent from my iPhone
> james at supmenow.com
> +44 7523 279 698
james at supmenow.com
+44 7523 279 698
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the swift-evolution