Phi*_*ord 7 clojure destructuring
我已经定义了一个采用地图的函数.我想用解构来访问这些值.但是,我还想检查是否有任何使用过的密钥.
所以,例如......
(defun func1 [{:keys [a b c] :rest rest}]
(println a b c)
(println rest))
(func1 {:a 1 :b 2 :c 3 :d 4})
Run Code Online (Sandbox Code Playgroud)
哪个会打印
1 2 3
4
Run Code Online (Sandbox Code Playgroud)
我想要这个的原因是,如果rest不为null,这可能是一个错误,我想发出信号.我知道:as,我可以使用.但后来我需要存储两次有效密钥列表.
我错过了什么吗?
菲尔
我真的不明白你为什么想知道是否有什么东西你不关心.如果您正在尝试执行"使用这些键执行特定操作,并对其他键执行某些操作"等操作,则可以执行以下操作:
(defn func [& {:keys [a b] :as args}]
(println a b c)
(println (dissoc args :a :b)))
(func :a 3 :b :c 5) =>
3 4
{:c 5}
nil
Run Code Online (Sandbox Code Playgroud)
如果你不得不两次提到这些关键词,你也可能会对此做些什么,但我无法想象它值得打扰.
我想要这个的原因是,如果rest不为null,这可能是一个错误,我想发出信号.
如果您是关心传递用户不正是你想要的,也许地图是不使用正确的数据结构.
| 归档时间: |
|
| 查看次数: |
1782 次 |
| 最近记录: |