Clojure 有条件地添加到集合中
我想根据一个条件向集合中添加一些内容,否则就不做了 我发现自己在写这样的东西: 德芬制作动物园 [动物园有冰] let[动物园如果有冰康动物园企鹅动物园] 动物园 使动物园[老虎]虚假;[老虎] 让动物园[北极熊]成为现实;[北极熊企鹅]Clojure 有条件地添加到集合中,clojure,Clojure,我想根据一个条件向集合中添加一些内容,否则就不做了 我发现自己在写这样的东西: 德芬制作动物园 [动物园有冰] let[动物园如果有冰康动物园企鹅动物园] 动物园 使动物园[老虎]虚假;[老虎] 让动物园[北极熊]成为现实;[北极熊企鹅] 我对Clojure很陌生,但对于一个普通的操作来说,这似乎是一个笨拙的解决方案。有没有更优雅的方法来解决这个问题?一种简化方法是省去let语句: (defn make-zoo [zoo has-ice] (if has-ice (conj zo
我对Clojure很陌生,但对于一个普通的操作来说,这似乎是一个笨拙的解决方案。有没有更优雅的方法来解决这个问题?一种简化方法是省去let语句:
(defn make-zoo
[zoo has-ice]
(if has-ice
(conj zoo "penguins")
zoo))
(make-zoo ["tigers"] false) => ["tigers"]
(make-zoo ["polar bears"] true) => ["polar bears" "penguins"]
我们可以使用cond->macro简化make zoo,cond->macro是->threading宏的条件派生:
(defn make-zoo [zoo has-ice]
(cond-> zoo, has-ice (conj "penguins")))