> On May 20, 2016, at 11:41 AM, Chris Lattner via swift-evolution 
> <[email protected]> wrote:
> 
> On May 20, 2016, at 7:26 AM, Matthew Johnson <[email protected]> wrote:
>>> (For instance, a perhaps controversial opinion: I think `dynamicType` is 
>>> properly capitalized for the syntactic slot it's in. That's not to say I 
>>> think we should *keep* `dynamicType`, but simply that `foo.dynamicType` is 
>>> more appropriate than `foo.dynamictype` would be.)
>> 
>> +1.  'foo.dynamictype' seems strange to me. 
> 
> foo.dynamicType is broken for other reasons.  I see x.dynamicType as being a 
> named operator (like sizeof) and not a property.  For example, we don’t want 
> .dynamicType to show up in code completion on every value in the universe 
> ("4.dynamicType”, really?).
> 
> That argues that it should be spelled as dynamicType(x), and ideally being a 
> standard library feature instead of a keyword.
> 
> -Chris

Gist: https://gist.github.com/erica/b0155e2f6d96c3d530fdafa9b3bd6272 
<https://gist.github.com/erica/b0155e2f6d96c3d530fdafa9b3bd6272>

Moving dynamicType to the standard library

Proposal: TBD
Author: Erica Sadun <https://github.com/erica>
Status: TBD
Review manager: TBD
 
<https://gist.github.com/erica/b0155e2f6d96c3d530fdafa9b3bd6272#introduction>Introduction

This proposal establishes dynamicType as a named operator rather than a 
property and moves it to the standard library.

 
<https://gist.github.com/erica/b0155e2f6d96c3d530fdafa9b3bd6272#motivation>Motivation

In Swift, dynamicType is a property. Because of that, it shows up in code 
completion as an "appropriate" completion for all values, regardless of whether 
it makes sense to do so or not. For example, Swift offers 4.dynamicType, 
myFunction().dynamicType, etc. Rather than express a logical attribute of a 
specific type, it can be applied to any expression. Since dynamicType behaves 
more like a operator (like sizeof), its implementation should follow suit.

Moving it to the standard library, allows Swift to remove a keyword and better 
aligns the functionality with its intended use.

 
<https://gist.github.com/erica/b0155e2f6d96c3d530fdafa9b3bd6272#detailed-design>Detailed
 Design

Upon adoption of this proposal, Swift removes the dynamicType keyword and 
introduces a dynamicType function:

dynamicType(value) // returns the dynamicType of value
 
<https://gist.github.com/erica/b0155e2f6d96c3d530fdafa9b3bd6272#impact-on-existing-code>Impact
 on Existing Code

Adopting this proposal will break code and require migration support, moving 
the postfix property syntax into a prefix function call.

 
<https://gist.github.com/erica/b0155e2f6d96c3d530fdafa9b3bd6272#alternatives-considered>Alternatives
 Considered

Not adopting this proposal

_______________________________________________
swift-evolution mailing list
[email protected]
https://lists.swift.org/mailman/listinfo/swift-evolution

Reply via email to