gpt4 book ai didi

javascript - Clojure[Script] 中映射的 ...rest 相当于什么?

转载 作者:行者123 更新时间:2023-11-28 17:38:07 27 4
gpt4 key购买 nike

我可以像下面这样在 JavaScript 中进行 map 销毁:

const drop = (key, obj) => {
const { [key]: _, ...rest } = obj;
return rest;
}

drop('name', { name: 'book', chapters: 12 }); // => { chapters: 12 }

如何在 Clojure[Script] 中对 map 执行 ...rest/& rest 操作?

最佳答案

Clojure 中没有与映射类似的等效解构。我认为如果您只想按键省略 map 条目,那么您正在寻找 dissoc 有效:

(dissoc {:name "book" :chapters 12}
:name)
=> {:chapters 12}

对于其他序列类型有剩余解构:

(let [[x & xs] [1 2 3]]
(prn x) ;; "1"
(prn xs)) ;; "(2 3)"

其中 xs(& 之后的部分)是值的其余部分。

map 解构还有其他几个选项:

(def my-map {:name "book" :chapters 12 :extra "stuff"})
(let [{:keys [name chapters] :as m} my-map]
(prn name) ;; value of name key only
(prn chapters) ;; value of chapters key only
(prn m)) ;; the entire bound value
;; "book"
;; 12
;; {:name "book", :chapters 12, :extra "stuff"}

在该解构示例中使用 :as 可能是您在 JavaScript 中看到的最接近的行为,只不过它不排除排除显式解构的键。

(let [{n :name} my-map]
(prn n)) ;; the value of name key only, aliased

参见this guide了解更多。

关于javascript - Clojure[Script] 中映射的 ...rest 相当于什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48613820/

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