【问题标题】:How to remove a key from a clojure tree using specter?如何使用 Spectre 从 clojure 树中删除密钥?
【发布时间】:2015-11-07 21:17:03
【问题描述】:

我已经开始使用 Clojure Spectre 库 (https://github.com/nathanmarz/specter)。我遇到的问题是使用转换或 setval 删除密钥。我可以将它设置为 nil,但是如何删除密钥?

【问题讨论】:

    标签: clojure clojurescript specter


    【解决方案1】:
    (setval :a NONE {:a 10 :b 20})
    => {:b 20}
    

    【讨论】:

      【解决方案2】:

      这似乎有效:

      (transform [ALL] #(when (not= (key %) :a) %) {:a 1 :b 2})
      => {:b 2}
      

      【讨论】:

      • 在 Clojure 1.9.0、Spectre 1.1.0 下,这给了我ClassCastException clojure.lang.PersistentVector cannot be cast to java.util.Map$Entry clojure.core/key (core.clj:1559)
      • 这里也一样,如果您尝试上述方法,仍然会收到ClassCastException
      【解决方案3】:

      根据这个reddit thread,你不能用幽灵dissoc(你可以过滤),但你可以用instar

      编辑:这现在是可能的。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-10-07
        • 1970-01-01
        • 1970-01-01
        • 2012-02-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多