1

我正在尝试这个:

(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)))
4

3 回答 3

1

你可以使用:

(apply hash-set (when (= a 1) x))

我假设 a 和 x 是变量,例如通过:

(defn foo [a & x] (apply hash-set (when (= a 1) x)))

我将参数 x 设为可选,因为如果 a 不等于 1,则不需要提供它。

于 2013-01-23T20:18:44.013 回答
1

其他方式:

(into #{} (when (= a 1) [x]))

如果你喜欢hash-set代码中的这个词,你可以这样做:

(apply hash-set (when (= a 1) [x]))
于 2013-01-23T22:05:20.193 回答
0

你可以这样做:

(if (= a 1) #{x} #{})
于 2013-01-23T20:20:42.347 回答