我有一個clojure地圖。將其命名爲opts
。我知道2種方式從這個地圖等,如果沒有鑰匙得到一些默認值獲取值:clojure地圖的默認值
(let [opts {}
title-1 (or (:title opts) "Default title")
title-2 (:title opts "Default title")]
(println title-1 title-2))
我看到了一些庫(奎爾,咒術)使用帶有or
第一種方法。在我看來,第二種方法更簡潔,更清晰。第一種方法是否有優勢?
使用(or (:title opts) "Default value")
的缺點是我們不能通過false
和nil
作爲值,在這種情況下總是使用默認值。
您也可以使用'(get opts:title「Default title」)'。 – ponzao
@ponzao這可能會更好,因爲如果map爲'nil','get'不會拋出'NullPointerException'。如果指定了它,它會返回'nil'或默認值。 –
@IvanKoblik'(:title nil「Default」)'也可以正常工作。 –