On 24/06/20 11:57 am, Guido van Rossum wrote:
> Matched key-value pairs must already be present in the mapping, and not
> on-the-fly by ``__missing__`` or ``__getitem__``. For example,
> ``collections.defaultdict`` instances will only match patterns with keys
> 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?