问题标签 [structural-pattern-matching]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
4 浏览

python-3.10 - 在 Python 3.10 中使用结构模式匹配匹配未知序列位置中的元素

是否有任何聪明的方法可以使用 Python 3.10 中的结构模式匹配来匹配未知长度序列中未知位置的元素?

下面是一个非工作示例,说明了我想做的事情。

如果您尝试使用保护子句,则不会捕获匹配项:

如果长度已知,则可以使用 or 模式,尽管它并不漂亮:

根据对有关结构模式匹配的其他问题的回答和评论,我预计会有很多回复告诉我,结构模式匹配不是适合这项工作的工具。我知道我的示例并没有展示为此使用结构模式匹配的好处,而不是像简单的 for 循环之类的东西,但想象一下解析由json.load(). 无论如何,我的问题不是正确的工具是什么,而只是是否可以使用此工具完成。

0 投票
1 回答
10 浏览

python - 模式匹配以检查协议。获取 TypeError:调用的匹配模式必须是类型

我需要匹配输入可迭代的情况。这是我尝试过的:

这产生了这个错误:

是否可以通过匹配/大小写检测可迭代性?

请注意,这两个问题解决了相同的错误消息,但两个问题都不是关于如何检测可迭代性:

0 投票
1 回答
5 浏览

python - 类模式匹配错误的情况

我正在编写一个对象序列化程序,但遇到类模式与预期情况不匹配的问题:

当我用一个元组调用dump_obj()时,它会在 I-case 上为 iterables 提供无限递归,而不是匹配 T-case 的元组。

当我用列表子类调用dump_obj()时,它匹配列表的 L-case 而不是 iterables 的预期 I-case。