On 06/23/2020 10:31 PM, Chris Angelico wrote:
On Wed, Jun 24, 2020 at 3:21 PM Ethan Furman 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.

Well, your example isn't using leading dots like `.BLACK` is, and your example isn't 
using `case _` as a final catch-all, and your example isn't using "case 
some_name_here" as an always True match.  In other words, your example isn't talking 
about what I'm talking about.  ;-)

--
~Ethan~
_______________________________________________
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/SX745WU7YFCTHIQSYLA4YIV4RUTLMAK4/
Code of Conduct: http://python.org/psf/codeofconduct/

Reply via email to