我寫了這個函數,它從樹中獲取元素。只是這個:如何繼承函數選項
(defn at [address tree] (reduce nth tree address))
現在的問題是,nth
有2重載;一個在索引超出範圍時拋出異常,另一個則返回參數not-found
而不是拋出和異常。
現在,我可以讓我的函數的重載添加此選項,像這樣:
(defn at [address tree not-found]
(reduce (fn [curr-tree index] (nth curr-tree index not-found))
tree address))
我可以抱怨我怎麼也得自行明確地做出了新的功能,而不是漂亮的nth
的。
雖然這不是真正的問題。我不應該爲nth
所具有的每個過載而重載。
nth
只有兩個重載,但在其他時候,當我想寫一個類似包裝的函數時,我該如何推遲決策給用戶。在這個例子中,我只是包裝nth
;爲了保持一致,我想at
模仿nth
的行爲。我如何繼承其他功能的選項?
我從clojure的角度問這個問題,但它可能適用於或不適用於其他語言。