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

张尚文

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

(let [x {:a 1 :b 1}]
  (match [x]
    [{:a _ :b 2}] :a0
    [{:a 1 :b 1}] :a1
    [{:c 3 :d _ :e 4}] :a2
    :else nil))

;=> :a1

为什么我们只能匹配一个‘x’?我们不能这样做的任何理由?

(let [x {:a 1 :b 1}]
  (match x
    {:a _ :b 2} :a0
    {:a 1 :b 1} :a1
    {:c 3 :d _ :e 4} :a2
    :else nil))

;=> :a1
致癌物

你可以; 或者至少,这就是我从阅读推断的源代码和文档match

的来源match从以下几行开始:

(defmacro match
  . . .
  [vars & clauses]
  (let [[vars clauses]
        (if (vector? vars)  ; If it's a vector...
          [vars clauses]    ;  leave it alone,
          [(vector vars)    ;  else wrap it in a vector
            . . .]

该文档还包含以下内容:

. . . 可选地,可以采用未包装在向量中的单个 var,然后问题不需要包装在向量中。

那么他们为什么要展示带有向量的例子呢?可能是为了语法的一致性。这可能有助于理解这样一个简单、基本的概述。在使用和不使用矢量之间来回切换将需要解释何时需要矢量,这会减损页面的主要观点。


编辑:实际上,它确实在顶部的该页面上明确说明您可以匹配未包装的值。您可以通过在match x该页面上搜索来找到它

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

从Clojure中的向量构造地图

来自分类Dev

更新Clojure中的地图向量中的值

来自分类Dev

在 Clojure 中从地图构建嵌套向量

来自分类Dev

使用core.match将Clojure中解析的xml内容展平

来自分类Dev

Clojure中的向量与向量

来自分类Dev

Clojure方法来更新向量中的地图

来自分类Dev

在Clojure中,如何合并两个地图向量?

来自分类Dev

在 clojure 中操作地图的两个向量

来自分类Dev

为什么使用Clojure向量传递键值对?

来自分类Dev

在Clojure core.logic中,为什么不能使用线程宏?

来自分类Dev

Clojure core.match在课堂上无法匹配

来自分类Dev

合并Clojure中的地图

来自分类Dev

合并Clojure中的地图

来自分类Dev

在 Clojure 中迭代地图

来自分类Dev

为什么Clojure的core.reducers比懒惰的收集功能快

来自分类Dev

为什么要分别导入clojure core.async库?

来自分类Dev

Clojure中的向量相等

来自分类Dev

在Clojure中迭代向量

来自分类Dev

Clojure:对地图向量中的地图中的每个值应用函数

来自分类Dev

Clojure:将函数应用于地图向量中的地图中的每个值

来自分类Dev

在Emacs中对Clojure的`match`进行适当的缩进

来自分类Dev

在Emacs中对Clojure的`match`进行适当的缩进

来自分类Dev

设计人员为什么要在Clojure中制作矢量,地图和设置功能?

来自分类Dev

Clojure-从循环内的向量中删除项目

来自分类Dev

clojure的core.typed中的`:-`是什么意思?

来自分类Dev

为什么trim()在Clojure的地图内部不起作用?

来自分类Dev

为什么Clojure向量函数结果不包含终止值?

来自分类Dev

是否在Clojure中订购地图?

来自分类Dev

从Clojure函数中返回地图

Related 相关文章

热门标签

归档