> On Apr 5, 2016, at 7:34 AM, Timothy Wood via swift-evolution 
> <swift-evolution@swift.org> wrote:
> 
> 
>> On Apr 4, 2016, at 7:13 PM, Joe Groff via swift-evolution 
>> <swift-evolution@swift.org> wrote:
>>> Would using another word or symbol fix that problem?
>> 
>> My preference would be for there to be only one Self, and have it always be 
>> the dynamic type of 'self'. Some people disagree, but I don't think it's all 
>> that onerous to have to write ClassName.foo if that's really what you 
>> specifically mean.
> 
> I would agree that Self should remain the dynamic version, but adding 
> StaticSelf (however it is spelled) adds the safety of being able to refactor 
> code w/o forgetting to rename an explicit class name. It adds the ability to 
> more clearly express what you mean (“the containing class/struct, whatever it 
> happens to be”), and it would reduce effort while reading code (in that you 
> could see quickly that it was StaticSelf instead of having to look to see 
> whether it was the same name as the enclosing type every time you read the 
> code).
> 
> My support for StaticSelf isn’t at all about it being too hard to type 
> ClassName.foo the first time, but about being able to read and maintain code 
> after the fact.

I think you have a good point with your `#Self` idea—there's definitely an 
analogy there to other magic constants like #function.

> And, of course, the argument that writing ClassName.foo isn’t onerous is 
> dangerously close to an argument for dropping “.foo” with a type inferred by 
> the call site... =)

From my own experience with C++11, if it weren't for code completion, having to 
utter 'EnumName::Case' over and over again when working with `enum class`es 
would drive me up the wall.

-Joe
_______________________________________________
swift-evolution mailing list
swift-evolution@swift.org
https://lists.swift.org/mailman/listinfo/swift-evolution

Reply via email to