gpt4 book ai didi

clojure - 为什么归约助手在对映射进行归约时可以解构向量?

转载 作者:行者123 更新时间:2023-12-02 12:09:18 25 4
gpt4 key购买 nike

我对 Clojure 中的以下代码感到困惑。该代码有效。但是,我不明白,在匿名函数中,当我们传入参数 [new-map [key val]] 时,我们明确告诉 Clojure 在 中期待一个参数[key val] 的向量形式对其进行解构,但我们传入一个哈希 {:max 30 :分钟 10}。这对我来说根本没有意义。

如果我们要将哈希传递给函数,参数不应该是[new-map {:key val}]吗?有人可以向我解释一下我的逻辑哪里出了问题吗?

(reduce (fn [new-map [key val]]
(assoc new-map key (inc val)))
{}
{:max 30 :min 10})

最佳答案

user=> (type [:plum 8])
clojure.lang.PersistentVector
user=> (def mymap {:apple 1 :banana 2 :orange 10 :plum 8})
#'user/mymap
user=> (type mymap)
clojure.lang.PersistentHashMap
user=> (first mymap)
[:plum 8]
user=> (type (first mymap))
clojure.lang.MapEntry

In the docs ,大约在页面的中间位置:

A map entry is treated as an ordered collection of key and value.

MapEntry延伸AMapEntry ,延伸APersistentVector ,也由 PersistentVector 扩展(您熟悉的那个)。

简短的版本是,您可以迭代映射的条目,映射中的每个条目就像一个向量,具有完全相同的结构:[键值]

关于clojure - 为什么归约助手在对映射进行归约时可以解构向量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26434058/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com