问题标签 [core.match]

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 投票
2 回答
195 浏览

clojure - core.match 模式的优先级

在我的 core.match 模式中,我希望一个特定的模式具有“高优先级”。例如在:

我希望行中的text变量在"empty"匹配时始终停止后续匹配并返回“空”。然而可能是因为这个子句更通用,它会尝试将其作为最后一个子句并匹配另一个子句。

0 投票
1 回答
866 浏览

javascript - 在 ClojureScript core.match 中匹配 false (== undefined, null)

我正在尝试匹配falsemap 键的值,这在 javascript 中有效地表示也undefinednull等等。在我看来,core.match 与该值完全匹配。有没有办法做到这一点?

另一种方法是匹配“not true”,但文档也没有给我任何提示如何做到这一点。

0 投票
1 回答
371 浏览

clojure - core.match 中的谓词函数调度

我刚刚开始深入core.match研究(顺便说一句,这是一个很棒的库),我希望能够扩展match以调度任意谓词函数。不幸的是,这看起来是不可能的,因为编译器在宏扩展时无法判断一个函数是否是一个函数。

这是否正确,如果是(或如果不是),有没有办法破解它,以便我可以在match表达式中使用如下所示的函数?

例如

我知道通过多方法扩展接口,这对于使用集合文字来匹配集合内的包含非常有效。

提前致谢。

0 投票
3 回答
766 浏览

clojure - 如何在 Clojurescript 中使用 core.match 和 goog.events.KeyCodes?

上面的代码有效。但是,如果我尝试不那么罗嗦,直接使用 goog 键码,就像这样

我收到以下 cljsbuild 错误:

好的,所以我不能使用goog.events.KeyCodes.*它们自己,但也许我可以使用def对它们的引用?所以我尝试

这确实可以编译,但现在匹配不起作用。每个关键事件都匹配[false UP]match 子句(core.match 总是发出[:slide :up])。

无论如何,第一个代码示例确实有效。但是为什么我不能在我的 core.match 匹配器中使用goog.events.KeyCodes.*或引用?goog.events.KeyCodes.*有什么我想念的吗?

0 投票
2 回答
259 浏览

clojure - Clojure core.match 无法匹配类

在评估这个超级简单的 core.match 表达式时,我得到:

这怎么可能是正确的,我是否缺少关于 core.match 的一些基本内容?在这个表格上做一个 macroexpand-1 给我:

任何指针表示赞赏。

0 投票
1 回答
269 浏览

clojure - 用 core.match/match 匹配 clojure 中的数据类型,而不是多方法

何我可以有这种类型的匹配工作。(我正在使用clojure.core.match/match)。或者是multimethod唯一的出路。

谢谢

0 投票
2 回答
624 浏览

clojure - Clojure评估宏的参数

我正在尝试编写一个为 core.match 宏生成模式的宏。

如果我直接将它与硬编码的前任一起使用,这很好用:

到目前为止一切都很好,但是如果我尝试使用函数调用传递前任:

问题是因为 match2 是一个宏 clojure 不会评估函数调用,而只会按原样传递表单。然后未评估的表单进入 core.match (再次未评估,因为 core.match 本身就是一个宏)并且 core.match 抛出异常,因为表单不是正确的模式。

如何强制对宏参数进行评估?或任何其他解决方法?

我被暗示这通常是用第二个宏来完成的,但我的尝试没有产生好的结果。

0 投票
2 回答
106 浏览

clojure - 将模式和结果作为向量传递给 core.match/match 的宏

我正在努力构建一个宏,让我core.match/match以向量的形式传递模式和结果。我希望能够做到这一点:

我尝试了以下方法和其他几种不起作用的方法,除非我将模式作为文字传递。

0 投票
1 回答
99 浏览

clojure - 如何将匹配的:或绑定到 core.match 中的变量

如何将匹配的:or或绑定到 core.match 中的变量?

0 投票
1 回答
71 浏览

clojure - 在 clojure 中,为什么 core.match 向量内的地图?

来自示例代码core.match,url:https ://github.com/clojure/core.match/wiki/Basic-usage

为什么我们可以只匹配一个'x'?为什么我们不能这样做?