[swift-evolution] [Review] SE-0036: Requiring Leading Dot Prefixes for Enum Instance Member Implementations

Matthew Johnson matthew at anandabits.com
Sat Apr 2 09:15:57 CDT 2016



Sent from my iPad

> On Apr 2, 2016, at 9:04 AM, David Hart <david at hartbit.com> wrote:
> 
> Hello Matthew,
> 
> If the goal is to make rules for accessing static members and enum cases more consistent, why can’t static members be accessed from inside the type cope with a dot prefix (sorry for the grim example)?

Actually they can as long as they return a value of the type.

struct Person {
    static let Bob: Person = Person(name: "Bob")
    let name: String
}

Let bob: Person = .Bob


> 
> struct Person {
>     static let lifeExpectency: Int = 80
>     let age: Int
>     var lifeRatio: Double { return Double(age) / Double(.lifeExpectency) }
> }
> 
> David.
> 
>>> On 01 Apr 2016, at 23:19, Matthew Johnson via swift-evolution <swift-evolution at swift.org> wrote:
>>> 
>>> 
>>> On Apr 1, 2016, at 4:07 PM, Dave Abrahams via swift-evolution <swift-evolution at swift.org> wrote:
>>> 
>>> Douglas Gregor via swift-evolution
>>> <swift-evolution at swift.org> wrote:
>>>> Hello Swift community,
>>>> 
>>>> The review of SE-0036 "Requiring Leading Dot Prefixes for Enum Instance
>>>> Member Implementations" begins now and runs throughApril 5, 2016. The
>>>> proposal is available here:
>>>> 
>>>> https://github.com/apple/swift-evolution/blob/master/proposals/0036-enum-dot.md
>>>> Reviews are an important part of the Swift evolution process. All reviews
>>>> should be sent to the swift-evolution mailing list at
>>>> 
>>>> https://lists.swift.org/mailman/listinfo/swift-evolution
>>>> <https://lists.swift.org/mailman/listinfo/swift-evolution>
>>>> or, if you would like to keep your feedback private, directly to the
>>>> review manager. When replying, please try to keep the proposal link at
>>>> the top of the message:
>>>> 
>>>> Proposal link:
>>>> 
>>>> https://github.com/apple/swift-evolution/blob/master/proposals/0036-enum-dot.md
>>>> Reply text
>>>> 
>>>> Other replies
>>>> <https://github.com/apple/swift-evolution#what-goes-into-a-review-1>What
>>>> goes into a review?
>>>> 
>>>> The goal of the review process is to improve the proposal under review
>>>> through constructive criticism and, eventually, determine the direction
>>>> of Swift. When writing your review, here are some questions you might
>>>> want to answer in your review:
>>>> 
>>>> What is your evaluation of the proposal?
>>>> Is the problem being addressed significant enough to warrant a change to Swift?
>>>> Does this proposal fit well with the feel and direction of Swift?
>>>> If you have used other languages or libraries with a similar feature, how
>>>> do you feel that this proposal compares to those?
>>>> How much effort did you put into your review? A glance, a quick reading,
>>>> or an in-depth study?
>>>> More information about the Swift evolution process is available at
>>>> 
>>>> https://github.com/apple/swift-evolution/blob/master/process.md
>>>> <https://github.com/apple/swift-evolution/blob/master/process.md>
>>>> Thank you,
>>>> 
>>>> Doug Gregor
>>>> 
>>>> Review Manager
>>> 
>>> This proposal seems to me like it's failing to fix the underlying problem,
>>> which is that people don't understand the leading dot rules, and papering
>>> over the problem by making the rule less consisten, with different behavior
>>> for enums and other type-scoped (static/class) entities. It doesn't seem
>>> like a principled solution to me. 
>> 
>> This proposal doesn’t change the leading dot rules at all.  What it does is make the rules for referencing static members *more* consistent than they are now, removing the special case for enum cases.
>> 
>> "Enumeration cases are essentially static not instance type members. Unlike static members in structures and classes, enumeration cases can be mentioned in initializers and instance methods without referencing a fully qualified type. This makes little sense. In no other case can an instance implementation directly access a static member."
>> 
>> I believe at one point in Swift’s history all static members could be referenced directly.  This proposal seems like it is cleaning up a case that was missed when that changed. 
>> 
>> 
>>> 
>>> -- 
>>> -Dave
>>> 
>>> _______________________________________________
>>> swift-evolution mailing list
>>> swift-evolution at swift.org
>>> https://lists.swift.org/mailman/listinfo/swift-evolution
>> 
>> _______________________________________________
>> 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/20160402/a62b9fac/attachment.html>


More information about the swift-evolution mailing list