2016-01-05 26 views
4

我需要一個函數,它需要兩個參數input字符串和default字符串,然後返回input(如果不是空白)或default是否有一個Clojure庫有一個函數作爲Java的StringUtils.defaultIfBlank(str,默認)?

(defn default-if-blank [input default] 
    (if (clojure.string/blank? input) 
    default 
    input)) 

我可以實現的功能,但我認爲會有很多的Clojure中的世界好工具庫,如Apache公地或番石榴在Java世界。

自己實現這樣的功能而不是使用某些庫是否很常見?我是Clojure的新手,所以這可能是一個愚蠢的問題,但任何建議都會幫助我。謝謝。

回答

7

你有什麼是非常正常的,並且在高質量的Clojure代碼中會非常好。完全可以這樣寫,因爲Clojure是一種簡潔的語言,它不會增加很多智力開銷。破壞之類的地圖時,

user> (get {1 "one" 2 "two"} 
      42 
      "infinity") 
"infinity" 

和可選參數:

在某些情況下,如果你從任何藏品的拉動值,你不需要它,例如,get有一個可選的默認參數

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 

使它不太常見到需要這些情況,儘管在我每天使用的代碼庫中有大量的(if (test foo) foo :default)個案。對於我們來說,這並不是一貫的,一貫的做法,可以像您一樣鞏固自己。

相關問題