用值替换列表中的空字符串

时间:2018-02-14 23:29:39

标签: clojure clojurescript

如果我有一个清单

("foo" "bar" "" "baz")

我需要将任何“”更改为“商业”,这是一个很好的方法吗?

2 个答案:

答案 0 :(得分:7)

为了完整起见,这是一种使用更专业的内置的替代方法:

(replace ; Replace all instances of... 
  {"" "biz"} ; "" with "biz"... 
  '("foo" "bar" "" "baz")) ; in the list

这也会返回一个懒惰的序列。

请注意,作为第一个参数给出的地图可以包含多个条目。如果您有多个替换,我肯定会使用replace而不是明确的map

replace actually just uses map behind the scenes,但使用地图查找而不是相等检查来进行替换。我希望他们能够针对一次替换进行类似的预处理,但replace更快一次,因为它不需要对所有替换进行线性搜索,就像你手动=一样检查。

答案 1 :(得分:5)

(map #(if (empty? %) "biz" %)
     '("foo" "bar" "" "baz"))