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/