On Wed, Jun 24, 2020 at 4:05 AM Greg Ewing <greg.ewing@canterbury.ac.nz> wrote:
On 24/06/20 11:57 am, Guido van Rossum wrote:
Matched key-value pairs must already be present in the mapping, and not created on-the-fly by ``__missing__`` or ``__getitem__``. For example, ``collections.defaultdict`` instances will only match patterns with keys that were already present when the ``match`` block was entered.
Does that mean the pattern matching logic is in cahoots with collections.defaultdict? What if you want to match against your own defaultdict-like type?
IIUC the pattern matching uses either .get(key, <sentinel>) or .__contains__(key) followed by .__getitem__(key). Neither of those will auto-add the item to a defaultdict (and the Mapping protocol supports both). @Brandt: what does your implementation currently do? Do you think we need to specify this in the PEP? -- --Guido van Rossum (python.org/~guido) *Pronouns: he/him **(why is my pronoun here?)* <http://feministing.com/2015/02/03/how-using-they-as-a-singular-pronoun-can-change-the-world/>