The idea (at least for me) is to namespace the enum within the protocol, so 
that users of the protocol have everything neatly packaged.  Right now I have 
to make a Separate “FoozleErrors” enum, which just feels messy.

I would really like to see us be able to nest Structs, Enums, and even other 
Protocols within a protocol, and it would just act as a namespace.  Wil is 
right though, that if we can only have one, Enums give us the most bang for our 
buck.  That is the case I run into most often.  In addition to Error Enums, I 
also have a lot of places where protocol functions return a classification (as 
an enum), and it is cluttering the top-level namespace with things named 
“Foozle____".

It isn’t a huge issue (it doesn’t stop me from doing anything), but it is an 
annoyance that I run into all the time…  I view the fact that Swift doesn’t 
support this as a bug.

Thanks,
Jon


> On Jul 8, 2017, at 6:10 PM, Akshay Hegde <[email protected]> wrote:
> 
> Wouldn’t the following work just as well for providing a namespace?
> 
> struct Foozle {
>     enum Errors: Error {
>         case malformedFoozle
>         case tooManyFoozles
>     }
> }
> 
> ~Akshay
> 
>> On Jul 8, 2017, at 17:24, Jonathan Hull via swift-evolution 
>> <[email protected] <mailto:[email protected]>> wrote:
>> 
>> I *really* want this as well.
>> 
>> I think there was a serious proposal to do this early in Swift 4.  Not sure 
>> why it stalled, but I seem to remember it being technically possible.
>> 
>> Thanks,
>> Jon
>> 
>>> On Jul 8, 2017, at 4:21 PM, William Shipley via swift-evolution 
>>> <[email protected] <mailto:[email protected]>> wrote:
>>> 
>>> Does anyone know if there's some good tech reason to not allow, like:
>>> 
>>> protocol Foozle {
>>>     enum Errors: Error {
>>>             case malformedFoozle
>>>             case tooManyFoozles
>>>     }
>>> }
>>> 
>>> Like, to me all this is doing is giving “Errors” a nice namespace, but the 
>>> compiler might have other thoughts.
>>> 
>>> -W
>>> _______________________________________________
>>> swift-evolution mailing list
>>> [email protected] <mailto:[email protected]>
>>> https://lists.swift.org/mailman/listinfo/swift-evolution
>> 
>> _______________________________________________
>> swift-evolution mailing list
>> [email protected] <mailto:[email protected]>
>> https://lists.swift.org/mailman/listinfo/swift-evolution
> 

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

Reply via email to