20
在Clojure中1.2:以下Clojure協議有什麼問題?
(defprotocol PP
(foo [bar])
(foo [bar baz]))
=> PP
(extend-protocol PP
Object
(foo [bar] 1)
(foo [bar baz] 2))
=> nil
(foo "hello!")
=> #<CompilerException java.lang.IllegalArgumentException: No single method: foo of interface: PP found for function: foo of protocol: PP
我要去哪裏錯了?我希望看到1作爲foo函數的單參數版本的結果,因爲「你好!」顯然是java.lang.Object的一個實例。
謝謝!非常有趣,我沒有意識到有可能以這種方式覆蓋定義......看起來像是一個鬼鬼祟祟的陷阱! – mikera 2011-02-11 00:31:54