我想根据条件向集合中添加一些东西,否则就不管它了.
我发现自己写的是这样的:
(defn make-zoo
[zoo has-ice]
(let [zoo (if has-ice (conj zoo "penguins") zoo)]
zoo))
(make-zoo ["tigers"] false) ;["tigers"]
(make-zoo ["polar bears"] true) ;["polar bears" "penguins"]
Run Code Online (Sandbox Code Playgroud)
我对Clojure很陌生,但对于一个常见的操作来说,这似乎是一个笨重的解决方案.是否有更优雅的方式来解决这个问题?
我们可以简化make-zoo使用cond->宏,->线程宏的条件导数:
(defn make-zoo [zoo has-ice]
(cond-> zoo, has-ice (conj "penguins")))
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
104 次 |
| 最近记录: |