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?