Rhodri James wrote:
> Eric Nieuwland wrote:
>
>> Just after I hit ‘send’ it dawned on me it might be preferable to make that
>>
>> match poly:
>> p0 = Point(x0, y0)
>> p1 = Point(x1, y1)
>> p2 = Point(x2, y2)
>> case Polygon(p0, p1, p2):
>> …
>>
>> so the part preceded by ‘match’ is the preparation phase for matching.
>>
> Are you intending p0, p1 and p2 to be subpatterns rather than object
> instantiations? That makes me a little twitchy; the difference between what
> you wrote and:
>
> match poly:
> p0 = Point(x0, y0)
> p1 = Point(x1, y1)
> case Polygon(p0, p1, p2):
> ...
> is very easy to miss.
>
You are perfectly right.
That is why I prefer explicit marking of variables to be bound by matching.
Your example could then become:
match poly:
p0 = Point(x0, \y0)
p1 = Point(\x1, y1)
case Polygon(p0, p1, \p2):
…
and IMHO it would be very clear what to expect.
An alternative would be to ‘declare’ variables that are to be bound to make
things even more explicit, like:
match poly:
x1 = to_be_bound_by_matching
y0 = to_be_bound_by_matching
p2 = to_be_bound_by_matching
p0 = Point(x0, y0)
p1 = Point(x1, y1)
case Polygon(p0, p1, p2):
…
where a better name than ‘to_be_bound_by_matching’ would certainly be needed.
—eric
_______________________________________________
Python-Dev mailing list -- [email protected]
To unsubscribe send an email to [email protected]
https://mail.python.org/mailman3/lists/python-dev.python.org/
Message archived at
https://mail.python.org/archives/list/[email protected]/message/W6VILFGBO4HJLEAUTSW6SJMNZN352KTJ/
Code of Conduct: http://python.org/psf/codeofconduct/