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