在Clojure中,我们可以使用remove
函数从序列中删除满足某个条件的项。这个函数接受一个谓词函数作为参数,对序列的每个元素进行求值,返回一个新的序列,其中不满足条件的项被保留。
例如,假设我们有一个序列(1 2 3 4 5)
,我们想要删除所有偶数。我们可以使用以下代码:
(def seq1 '(1 2 3 4 5))
(def seq2 (remove even? seq1))
在上述代码中,even?
是一个Clojure内置的谓词函数,它判断一个数是否为偶数。remove
函数会对seq1
中的每个元素应用even?
函数,并返回一个新的序列seq2
,其中仅包含不满足条件的项:(1 3 5)
。
对于映射中的值,我们可以使用dissoc
函数来删除指定的键值对。dissoc
函数接受一个映射和一个或多个键作为参数,在返回的新映射中删除指定的键值对。
例如,假设我们有一个映射{:a 1 :b 2 :c 3}
,我们想要删除键为:b
的键值对。我们可以使用以下代码:
(def map1 {:a 1 :b 2 :c 3})
(def map2 (dissoc map1 :b))
在上述代码中,dissoc
函数会返回一个新的映射map2
,其中键为:b
的键值对被删除:{:a 1 :c 3}
。
总结起来,在Clojure中从序列中删除项可以使用remove
函数,而在映射中删除值可以使用dissoc
函数。
相关链接:
领取专属 10元无门槛券
手把手带您无忧上云