如果我有一个清单
("foo" "bar" "" "baz")
我需要将任何“”更改为“商业”,这是一个很好的方法吗?
答案 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"))