1
爲了更好地理解Clojure協議,我問自己他們是否像cond
一樣行事。比如該功能可能會溢出:Clojure - 協議/多方法溢出
(defn my-cond [n]
(cond
(< n 0) (my-cond (inc n))
(> n 0) (my-cond (dec n))
:else "zero"))
> (my-cond 3) ;; "zero" > (my-cond 99999999) ;; java.lang.StackOverflowError
舉例來說,假設我現在用一個協議,使同等(即遞歸調用協議)。它是否會以堆疊的方式發生變化? (1)我對協議內部沒有理解,(2)因爲它們使得代碼更少耦合,所以它可能使得更容易引入這種類型的循環所以能夠預防它是有意義的。
協議和多方法是否以與正常方法調用相同的方式使用堆棧?
是的。花15分鐘時間嘗試自己看,包括一些必要的閱讀。 – muhuk
@ muhuk我認爲有差異,因爲協議比cond快。 「這需要15分鐘時間來嘗試自己看,包括一些必要的閱讀。」 =>我現在正在做:) – nha
爲了避免誤解:我不是指RTFM意義上的15分鐘。但是,嘗試一下併發布結果通常是一個好主意,有時它可能會導致一個不同的,更好描述的問題。另外,我假設你知道「復發」。 – muhuk