On Wed, Jun 24, 2020 at 3:21 PM Ethan Furman <et...@stoneleaf.us> wrote:
>
> On 06/23/2020 09:01 AM, PEP 622 wrote:
>
> > from enum import Enum
> >
> > class Color(Enum):
> >     BLACK = 1
> >     RED = 2
> >
> > BLACK = 1
> > RED = 2
> >
> > match color:
> >     case .BLACK | Color.BLACK:
> >         print("Black suits every color")
> >     case BLACK:  # This will just assign a new value to BLACK.
> >         ...
>
> As others have noted, the leading dot to disambiguate between a name 
> assignment and a value check is going to be a problem.  I think it's also 
> unnecessary because instead of
>
>      case BLACK:
>          blahblah()
>
> we can do
>
>      case _:
>          # look ma! BLACK is just "color"!
>          BLACK = color  # if you really want it bound to another name
>
> In other words, the PEP is currently building in two ways to do the same 
> thing -- make a default case.  One of those ways is going to be a pain; the 
> other, once renamed to "else", will be perfect!  :-)  As a bonus, no special 
> casing for leading dots.
>

But what if that's composed into something else?

class Room(Enum):
    LIBRARY = 1
    BILLIARD_ROOM = 2
    ...

match accusation:
    case (Color.SCARLETT, Room.BILLIARD_ROOM):
        print("Correct")
    case (Color.SCARLETT, _):
        print("Not there!")
    case (_, Room.BILLIARD_ROOM):
        print("Wrong person!")
    case (_, _):
        print("Nope. Just nope.")

Without the dots, there's no way to tell whether you're matching
specific values in the tuple, or matching by length alone and then
capturing. You can't use the 'else' keyword for a partial match.

ChrisA
_______________________________________________
Python-Dev mailing list -- python-dev@python.org
To unsubscribe send an email to python-dev-le...@python.org
https://mail.python.org/mailman3/lists/python-dev.python.org/
Message archived at 
https://mail.python.org/archives/list/python-dev@python.org/message/TYKZU5HALAN3I72NBKE4QC3ZJI355DY7/
Code of Conduct: http://python.org/psf/codeofconduct/

Reply via email to