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