我正在尝试这个:
(hash-set (when (= a 1) x))
如果#{x}
等于a
,我期待1
,否则为空集#{}
。但我得到#{nil}
而不是任何空集。如何重写声明?
PS。解决方法,但它看起来很难看:
(filter #(not (nil? %)) (hash-set (when (= a 1) x)))
解决方案:
(apply hash-set (when (= a 1) (list x)))
答案 0 :(得分:1)
您可以使用:
(apply hash-set (when (= a 1) x))
我假设a和x是变量,例如通过:
(defn foo [a & x] (apply hash-set (when (= a 1) x)))
我将参数x设为可选,因为如果不等于1,则不需要提供参数。
答案 1 :(得分:1)
另一种方式:
(into #{} (when (= a 1) [x]))
如果您喜欢代码中的单词hash-set
,则可以执行以下操作:
(apply hash-set (when (= a 1) [x]))
答案 2 :(得分:0)
你可以这样做:
(if (= a 1) #{x} #{})