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

THX*_*137 0 clojure clojurescript

如果我有一个清单

("foo" "bar" "" "baz")
Run Code Online (Sandbox Code Playgroud)

我需要改变任何""到"商业",有什么好办法去做?

Car*_*ate 7

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

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

这也返回一个懒惰的序列.

请注意,作为第一个参数给出的映射可以包含多个条目.如果你有多个替代品,我绝对会replace明确地说map.

replace实际上只是map在幕后使用,但使用地图查找而不是相等检查来进行替换.我希望他们能够为一次替换进行类似的预制,但是为了replace不止一次更快,因为它不需要对所有替换进行线性搜索,就像你进行手动=检查一样.


Wal*_*ter 5

(map #(if (empty? %) "biz" %)
     '("foo" "bar" "" "baz"))
Run Code Online (Sandbox Code Playgroud)