[swift-evolution] [Proposal] Allow enumerating cases in enumerations
Charlie Monroe
charlie at charliemonroe.net
Tue Jul 5 05:47:53 CDT 2016
This is mentioned in Gabriel's proposal:
> Implement a native .cases static var for all enumerations without associated values
But as has been mentioned in the discussion, this was mentioned by Brent:
> In previous discussions, the core team specifically asked that this be opt-in so that types which don't want it don't need to "pay" for it.
> On Jul 5, 2016, at 12:43 PM, James Campbell <james at supmenow.com> wrote:
>
> Maybe a way we could opt in is by only doing this for enums with out turples?
>
> i.e
>
> enum ABTestingBrah {
>
> case A
> case B
>
> }
>
> I'm not sure if enums that take turples would need this functionality.
>
> ___________________________________
>
> James⎥Head of Trolls
>
> james at supmenow.com <mailto:james at supmenow.com>⎥supmenow.com <http://supmenow.com/>
> Sup
>
> Runway East
>
>
> 10 Finsbury Square
>
> London
>
>
> EC2A 1AF
>
>
> On 5 July 2016 at 11:39, Charlie Monroe <charlie at charliemonroe.net <mailto:charlie at charliemonroe.net>> wrote:
> Example:
>
> enum MediaKind {
> case HomeVideo, Movie, MusicVideo, TVShow
>
> var localizedName: String { ... }
> }
>
> let popUpButton: NSPopUpButton = ...
> for kind in MediaKind.allKinds {
> popUpButton.addItemWithTitle(kind.localizedName)
> }
>
> And many, many more.
>
>
>> On Jul 5, 2016, at 12:33 PM, James Campbell via swift-evolution <swift-evolution at swift.org <mailto:swift-evolution at swift.org>> wrote:
>>
>> Would love a real life scenario of why you would need this.
>>
>> ___________________________________
>>
>> James⎥Head of Trolls
>>
>> james at supmenow.com <mailto:james at supmenow.com>⎥supmenow.com <http://supmenow.com/>
>> Sup
>>
>> Runway East
>>
>>
>> 10 Finsbury Square
>>
>> London
>>
>>
>> EC2A 1AF
>>
>>
>> On 4 July 2016 at 02:36, Gabriel Lanata via swift-evolution <swift-evolution at swift.org <mailto:swift-evolution at swift.org>> wrote:
>> Hello, this has been proposed multiple times before in different ways.
>>
>> Link to detailed proposal draft:
>> https://github.com/gabriellanata/swift-evolution/blob/master/proposals/NNNN-allow-enumerating-cases-in-enumerations.md <https://github.com/gabriellanata/swift-evolution/blob/master/proposals/NNNN-allow-enumerating-cases-in-enumerations.md>
>>
>> It is currently not possible to enumerate through all the possible cases of an enumeration object without adding a hardcoded value or recurring to unsafe workarounds. The proposal is to add a method of obtaining an array or set of all the possible cases natively for enumerations without associated values.
>>
>> The proposed solution is to implement a native `.cases` static var for all enumerations without associated values. This would provide a strict type-safe way of enumerating though the possible cases without risking runtime errors. The resulting code is a lot cleaner and less prone to errors caused by forgetting to update the hardcoded values when modifying cases.
>>
>> Resulting code:
>>
>> enum PokemonType {
>> case Fire, Grass, Water, Wind
>> }
>> for pokemonType in PokemonType.cases {
>> // Do stuff
>> }
>> PokemonType.cases.count // Returns 4
>>
>>
>> -------
>> Gabriel
>>
>>
>> _______________________________________________
>> swift-evolution mailing list
>> swift-evolution at swift.org <mailto:swift-evolution at swift.org>
>> https://lists.swift.org/mailman/listinfo/swift-evolution <https://lists.swift.org/mailman/listinfo/swift-evolution>
>>
>>
>> _______________________________________________
>> swift-evolution mailing list
>> swift-evolution at swift.org <mailto:swift-evolution at swift.org>
>> https://lists.swift.org/mailman/listinfo/swift-evolution <https://lists.swift.org/mailman/listinfo/swift-evolution>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.swift.org/pipermail/swift-evolution/attachments/20160705/593f8732/attachment.html>
More information about the swift-evolution
mailing list