[swift-evolution] [Pitch] Adding a Self type name shortcut for static member access

David Hart david at hartbit.com
Thu Apr 7 01:09:18 CDT 2016


There's something I find very confusing with this proposal, and it's how Self is already used in protocol definitions to represent the STATIC type of the type that conforms to the protocol. I think people will be potentially very confused by how Self represents different types in different contexts:

protocol Copyable {
    func copy() -> Self
}

class Animal : Copyable {
    init() {}
    func copy() -> Animal {
        return Self.init()
    }
}

class Cat : Animal {}

In the previous sample, wouldn't it be confusing to people if Self in the protocol means Animal in the Animal type, but Self in the Animal type may mean Cat?

Sent from my iPad
> On 06 Apr 2016, at 18:51, Erica Sadun via swift-evolution <swift-evolution at swift.org> wrote:
> 
> 
>>> On Apr 5, 2016, at 4:04 PM, Joe Groff <jgroff at apple.com> wrote:
>>> 
>>> 
>>> On Apr 5, 2016, at 3:02 PM, Erica Sadun <erica at ericasadun.com> wrote:
>>> 
>>> As the discussion seems to be quieting down, I've tried to summarize the on-list discussion and distill it into a preliminary proposal draft. Please let me know if this covers what you think it should or if I've entirely missed the mark. (It wouldn't be the first time.)
>>> 
>>> Regards,  -- Erica
> 
> 
> Pull Request 248: https://github.com/apple/swift-evolution/pull/248
> 
> Within a class scope, Self means "the dynamic class of self". This proposal extends that courtesy to value types, where dynamic Self will match a construct's static type, and to the bodies of class members, where it may not. It also introduces a static variation, #Self that expands to static type of the code it appears within.
> 
> This proposal was discussed on the Swift Evolution list in the [Pitch] Adding a Self type name shortcut for static member access thread.
> 
> Thanks, -- E
> 
> _______________________________________________
> swift-evolution mailing list
> swift-evolution at swift.org
> https://lists.swift.org/mailman/listinfo/swift-evolution
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.swift.org/pipermail/swift-evolution/attachments/20160407/f69ce6df/attachment.html>


More information about the swift-evolution mailing list