我想在我的类型中有一个带有可选参数的函数。我已经成功地在不属于某个类型的函数中使用了可选参数,但是,我似乎无法让它在协议和类型中工作。
我失败的试验:
Clojure 1.4.0
user=> (defprotocol OptArg
(func [this a & b]))
OptArg
user=> (deftype Imp [] OptArg
(func [this a & b] (println a b)))
user.Imp
user=> (func (Imp.) 1 2)
CompilerException java.lang.IllegalArgumentException: No single method: func of interface: user.OptArg found for function: func of protocol: OptArg, compiling:(NO_SOURCE_PATH:5)
user=> (defn opt-arg [a & b] (println a b))
#'user/opt-arg
user=> (opt-arg 1 2)
1 (2)
nil
user=> (opt-arg 1)
1 nil
nil
user=>