是否有一些Clojure库的函数充当Java的StringUtils.defaultIfBlank(str,default)?

phi*_*kim 4 string clojure

我需要一个函数,它接受两个参数input字符串和default字符串,然后返回,input如果不是空白,或default.

(defn default-if-blank [input default]
  (if (clojure.string/blank? input)
    default
    input))
Run Code Online (Sandbox Code Playgroud)

我可以实现这个功能,但我认为在Clojure世界中会有很多优秀的实用程序库,比如Apache公共或Java世界中的Guava.

我自己实现这些功能,而不是使用某些库是常见的吗?我是Clojure的新手,所以这可能是个愚蠢的问题,但任何建议都会对我有所帮助.谢谢.

Art*_*ldt 7

你所拥有的是非常正常的,并且在高质量的Clojure代码中完全没问题.用这种方式编写是完全可以的,因为Clojure是一种简洁的语言,它不会增加太多的智力开销.

在某些情况下,您不需要它,例如,如果您从任何集合中提取值,get则采用可选的默认参数:

user> (get {1 "one" 2 "two"}
            42
           "infinity")
"infinity"
Run Code Online (Sandbox Code Playgroud)

在破坏地图之类的东西时可选参数:

user> (let [{a :a b :b c :c :or {a :default-a
                                 b :default-b}}
            {:a 42 :c 99}]
        (println "a is" a)
        (println "b is" b)
        (println "c is" c))
a is 42
b is :default-b
c is 99
Run Code Online (Sandbox Code Playgroud)

尽管(if (test foo) foo :default)在我每天使用的代码库中有很多案例,但是不太常见需要这些情况.对我们来说,这种方式并不常见,也不一定能够像你所做的那样得到巩固.