我对Clojure中的以下代码感到困惑.代码有效.不过,我不明白的是,匿名函数中,当我们通过在参数[new-map [key val]]中,我们明确告诉Clojure的期望的参数矢量形式的[key val]和解构它,但我们传递一个哈希值 {:max 30 :min 10}.对我来说根本没有意义.
[new-map {:key val}]如果我们要将哈希传递给函数,那么参数不应该是吗?有人可以向我解释我的逻辑出错了吗?
(reduce (fn [new-map [key val]]
(assoc new-map key (inc val)))
{}
{:max 30 :min 10})
Run Code Online (Sandbox Code Playgroud)
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
Run Code Online (Sandbox Code Playgroud)
在文档中,大约在页面的中间位置:
映射条目被视为键和值的有序集合.
MapEntry扩展了AMapEntry,它扩展了APersistentVector,它也由PersistentVector(你熟悉的那个)扩展.
简短的版本是,您可以遍历地图的条目,并且地图中的每个条目都像一个矢量,具有完全相同的结构:[key value].
| 归档时间: |
|
| 查看次数: |
110 次 |
| 最近记录: |