Clojure协议是否支持类型提示,以便可以像静态类型化语言那样重载具有相同参数的相同方法名(类型提示除外)?
例如,
(defprotocol IFoo
(get-val [this ^String astring])
(get-val [this ^AClass aclass]))如果没有,我可以实现这个,还是必须重命名这些方法?
发布于 2022-01-05 08:11:31
Afaik,你不能用defprotocol做这件事,但是用definterface还是有可能的
(definterface Intf
(^String add [^String s])
(^long add [^long l]))
(defrecord Rec [^long data]
Intf
(^String add [self ^String s] (str data s))
(^long add [self ^long l] (+ data l)))
user> (let [r (Rec. 101)]
[(.add r "asd")
(.add r 200)])
;;=> ["101asd" 301]https://stackoverflow.com/questions/70587483
复制相似问题